프로젝트를 수행 할 때 기술 선택이 매우 중요합니다. 기본 방법은 빅 데이터의 액세스 속도 및 수정 속도에 직접적인 영향을 미칩니다. JPA, Hibernate 등과 같은 Java에는 많은 우수한 ORM 프레임 워크가 있습니다. 우리가 말했듯이 프레임 워크에는 프레임 워크의 이점이 있으며 물론 개선 될 수있는 일부 영역이 있습니다. 현재 빅 데이터 추가, 삭제 및 수정을 지원하기 위해 다양한 비즈니스 요구와 다양한 방문에 대한 기본 아키텍처를 다시 캡슐화해야합니다.
암호:
java.io.*; Java.sql.*; java.util.logging.level import; java.util.logging.logger import; import javax.servlet.jsp.jstl.sql.*; / ** * dbhelper * @author qmx * */ public class dbhelper {private String sql; // 공개 void setsql (string sql) {this.sql = sql; } private list sqlValues; // SQL 문의 시스템 매개 변수 public void setsqlvalues (list sqlvalues) {this.sqlvalues = sqlvalues; } private list <ist> sqlvalue; // SQL 문의 시스템 매개 변수 public void setsqlvalue (list <ist> sqlvalues) {this.sqlvalue = sqlvalues; } 개인 연결 사기; // 연결 객체 public void setcon (Connection con) {this.con = con; } public dbhelper () {this.con = getConnection (); // 연결 개체에 초기 값을 할당}/*** 데이터베이스 연결 가져옵니다* @return*/private connection getConnection () {String driver_class = null; 문자열 driver_url = null; 문자열 database_user = null; 문자열 database_password = null; {inputStream fis = this.getClass (). getResourCeasStream ( "/db.properties"); // 데이터베이스 구성 파일을 메모리 속성에로드 p = 새 속성 (); P.LOAD (FIS); driver_class = p.getProperty ( "driver_class"); // 데이터베이스 구성 파일을 가져옵니다. driver_url = p.getProperty ( "driver_url"); database_user = p.getProperty ( "database_user"); database_password = p.getProperty ( "database_password"); class.forname (driver_class); con = drivemanager.getConnection (driver_url, database_user, database_password); } catch (classNotFoundException e) {// TODO 자동 생성 캐치 블록 E.PrintStackTrace (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (filenotfoundException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } return con; } / ** * 데이터베이스를 닫습니다 * @param con * @param pst * @param rst * / private void closeAll (Connection Con, RecessTatement PST, resultSet rst) {if (rst! = null) {try {rst.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}}} / ** * 데이터베이스를 닫습니다 * @param con * @param pst * @param rst * / private void closeAll (Connection con, statement pst, resultset rst) {if (rst! = null) {try {rst.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}} / ** * 찾기 * @param sql * @param sqlvalues * @return * / public result executeQuery () {result result = null; resultSet rst = null; 준비된 상태 pST = null; try {pst = con.preparestatement (SQL); if (sqlvalues! = null && sqlvalues.size ()> 0) {// 자리 표시자가 sql 문에 존재하면 setsqlvalues (pst, sqlvalues); } rst = pst.executeQuery (); 결과 = resultupport.toresult (RST); // 데이터베이스를 닫기 전에 변환을 완료하십시오} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 마침내 {this.closeall (con, pst, rst); } 반환 결과; } / ** * 추가, 삭제, 수정, * @return * / public int executeUpdate () {int result = -1; 준비된 상태 pST = null; try {pst = con.preparestatement (SQL); if (sqlvalues! = null && sqlvalues.size ()> 0) {// 자리 표시자가 sql 문에 존재하는 경우 setsqlvalues (pst, sqlvalues); } result = pst.executeUpdate (); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 마침내 {this.closeall (con, pst, null); } 반환 결과; } / *** 배치를 추가하기 위해 준비된 스테이트를 사용한 방법* @return* / public int [] executeUpdatemore () {int [] result = null; try {preparedstatement perst = con.preparestatement (sql, resultset.type_scroll_sensitive, resultset.concur_read_only); for (for (list sqlvaluestring : sqlvalue) {for (int i = 0; i <sqlvaluestring.size (); i ++) {try {prest.setobject (i+1, sqlvaluestring.get (i)); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} prest.addbatch (); } prest.executebatch (); /* con.commit ();*/ this.closeall (con, perst, null); } catch (sqlexception ex) {logger.getLogger (dbhelper.class.getName ()). log (level.severe, null, ex); } 반환 결과; } / ** * 배치 메소드를 추가하여 배치 방법, strvalue : * "insert intoadlogs (ip, 웹 사이트, yyyymmdd, 시간) 값 ( '192.168.1.3', 'localhost', '20081009', 8, '23123') * @throws sqlectement * / public int [] executeupdatemorenotauto ()는 sqlexception {int [] result = null; con.setAutocommit (false); 명령문 stmt = con.createstatement (resultset.type_scroll_sensitive, resultet.concur_read_only); 문자열 [] sqlstring = null; for (string strvalue : sqlstring) {stmt.execute (strvalue); } con.commit (); 반환 결과; } / ** * 배치 방법, strvalue를 추가하기 위해 준비 상태를 사용하십시오 : * "IP, 웹 사이트, yyyymmdd, 시간) 값 ( '192.168.1.3', 'localhost', '20081009', 8, '23123')" * @Throws (@Throws sqlection * / public into) sqlexception {// 현재 자동 제출 모드 저장 부울 부울 해체 = false; 문자열 [] sqlstring = null; int [] result = null; try {booleanautocommit = con.getautocommit (); // 자동 제출 콘을 닫습니다. 명령문 stmt = con.createstatement (resultset.type_scroll_sensitive, resultet.concur_read_only); // 문을 사용하여 여러 SQL 문을 동시에 수집하기 위해/*stmt.addbatch (insert_sql1); stmt.addbatch (insert_sql2); stmt.addbatch (update_sql3); */ for (문자열 strvalue : sqlstring) {stmt.addbatch (strvalue); } // 모든 SQL 문을 동시에 stmt.executebatch ()로 제출합니다. // 수정 제출 con.commit (); con.setAutocommit (booleanAutocommit); this.closeall (con, stmt, null); } catch (예외 e) {e.printstacktrace (); con.rollback (); // Set SetAutoCommit (False)은 캐치에서 연결의 롤백 작동을 수행하지 않으며 작업 테이블이 잠겨있어 데이터베이스가 교착 상태에 빠지게됩니다.} return result; } / ** * SQL 문 *에서 자리 표시 자에게 값을 할당 * @param pst * @param sqlvalues * / private void setsqlvalues (preadingstatement pst, list sqlvalues) {for (int i = 0; i <sqlvalues.size (); i ++) pst.setobject (i+1, sqlvalues.get (i)); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}}}}} DB.Properties의 데이터베이스에 액세스하기위한 우리의 쓰기 정보 :
driver_class = com.mysql.jdbc.driver driver_url = jdbc : mysql : //192.168.22.246 : 3306/importexCeltest Database_user = Basic Database_Password = BASIC
시험:
java.util.*; public class importexCeltest {public static void main (String [] args) { /*dbhelper db = new dbhelper (); 문자열 sql = "tb_coursetype에 삽입 (id, couretyyPename) 값 ( '2012003', 'qmx3')"; DB.SETSQL (SQL); db.executeUpdate ();* / /*dbhelper db1 = new dbhelper (); 문자열 sql1 = "tb_coursetype에 삽입 (id, couretyyPename) 값 (?,?); list sqlvalues = new arraylist (); sqlvalues.add ( "2012004"); sqlvalues.add ( "qmx4"); db1.setsqlvalues (sqlvalues); DB1.SETSQL (SQL1); db1.executeupdate ();*/ dbhelper db = new dbhelper (); 문자열 sql = "tb_coursetype에 삽입 (id, couretyyPename) 값 (?,?)"; List <ist> sqlvalues = new ArrayList (); list sqlvaluestring = new arraylist (); sqlvaluestring.add ( "2012010"); sqlvaluestring.add ( "qmx10"); sqlvalues.add (sqlvaluestring); list sqlvaluestring1 = new arraylist (); sqlvaluestring1.add ( "2012011"); sqlvaluestring1.add ( "qmx11"); sqlvalues.add (sqlvaluestring1); list sqlvaluestring2 = new arraylist (); sqlvaluestring2.add ( "2012012"); sqlvaluestring2.add ( "qmx12"); sqlvalues.add (sqlvaluestring2); list sqlvaluestring3 = new arraylist (); sqlvaluestring3.add ( "2012013"); sqlvaluestring3.add ( "qmx13"); sqlvalues.add (sqlvaluestring3); db.setsqlvalue (sqlvalues); DB.SETSQL (SQL); db.executeupdatemore (); }}