처리 속도를 높이기 위해 JDBC 문을 일괄 처리
저장 프로세스의 가장 간단한 형식은 전체 프로세스가 하나의 SQL 문구만 포함하는 것이다.이 문장들을 함께 놓으면 관리하기도 쉽고 운행 속도도 높일 수 있다.Statement 클래스는 일련의 SQL 문장을 포함하는 능력을 가지고 있기 때문에 모든 SQL 문장을 데이터베이스 세션에서 실행할 수 있고 데이터베이스에 일련의 실행 호출을 피할 수 있습니다.
배치 기능을 사용하려면 다음 두 가지 방법이 필요합니다.
addBatch 방법
excuteBatch 방법
ddBatch 방법은 표준 SQL (Statement를 사용한다면) 을 매개 변수로 받아들일 수도 있고, 매개 변수를 포함하지 않을 수도 있다. (Prepared Statement를 사용한다면)
excuteBatch 방법은 다음에 SQL 문장을 실행하고 int형 그룹을 되돌려줍니다.이 수조는 문장마다 영향을 주는 줄 수를 포함한다.일괄 처리에서 SELECT나 결과만 되돌려주는 문장을 사용하면 SQLException 이상이 발생합니다.
다음은 간단한java입니다.sql.Statement의 예:
Statement stmt = conn.createStatement();
stmt.insert("DELETE FROM Users");
stmt.insert("INSERT INTO Users VALUES('rod', 37, 'circle')");
stmt.insert("INSERT INTO Users VALUES('jane', 33, 'triangle')");
stmt.insert("INSERT INTO Users VALUES('freddy', 29, 'square')");
int[] counts = stmt.executeBatch();
PreparedStatement를 사용하면 조금 다릅니다.SQL 문은 하나만 처리할 수 있지만 여러 매개변수를 포함할 수 있습니다.다음은 PreparedStatement를 사용하여 다시 쓴 위의 예입니다.
//삭제 동작을 하지 않았음을 주의하십시오
PreparedStatement stmt = conn.prepareStatement( _
"INSERT INTO Users VALUES(?,?,?)");
User[ ] users = ...;
for(int i=0; i
stmt.setInt(1, users[i].getName());
stmt.setInt(2, users[i].getAge());
stmt.setInt(3, users[i].getShape());
stmt.addBatch( );
}
int[ ] counts = stmt.executeBatch();
이것은 구체적인 실행 횟수를 모르는 SQL 코드를 처리하는 좋은 방법이다.일괄 처리가 없습니다. 50명의 사용자를 추가하려면 성능에 영향을 받을 수 있습니다.만일 누가 10000명의 사용자를 추가한 스크립트를 썼다면, 실행 속도는 견디기 어려울 것이다.일괄 처리를 늘리면 성능 향상에 도움이 되고, 다음 상황에서는 코드의 가독성을 개선할 수 있다.
PreparedStatement를 사용하여 개발 시간 단축
JDBC(Java Database Connectivity,java 데이터베이스 연결)의 API 중 주요 네 가지 클래스 중 하나인 java.sql.Statement는 개발자에게 많은 시간과 노력을 요구합니다.Statement를 사용하여 JDBC에 접근할 때 공통적으로 존재하는 문제는 적당한 형식의 날짜와 시간 스탬프를 입력하는 것입니다: 2002-02-05 20:56 또는 02/05/02 8:56 PM.자바를 사용합니다.sql.Prepared Statement, 이 문제는 자동으로 해결됩니다.하나의 Prepared Statement는java에서 시작합니다.sql.Connection 객체 및 제공된 SQL 문자열의 경우 SQL 문자열에 물음표(?)가 포함됩니다.물음표는 변수의 위치를 표시하고 변수의 값을 제공하며 마지막으로 다음과 같은 문을 실행합니다.
Stringsql = "SELECT * FROM People p WHERE p.id = ? AND p.name = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1,id);
ps.setString(2,name);
ResultSet rs = ps.execute();
PreparedStatement를 사용하는 또 다른 장점은 문자열이 동적 생성이 아니라는 것이다.다음은 문자열을 동적으로 만드는 예입니다.Stringsql = "SELECT * FROM People p WHERE p.i = "+id;
<A href="http://ad.cn.doubleclick.net/click%3Bh=v2|3065|3|0|%2a|d%3B6674094%3B0-0%3B0%3B8394480%3B4252-1|1%3B3892012|3909908|1%3B%3B%7Efdr%3D6407221%3B0-0%3B0%3B6694709%3B31-1|1%3B3640229|3658125|1%3B%3B%3fhttp://www.oracle.com/go/?&amp;Src=2039880&amp;Act=388"target=_top><IMG src="http://m2.cn.doubleclick.net/714347/10gdata_336x280.gif"border=0></A>
이는 JVM(JavaVirtual Machine, Java 가상 머신)과 드라이버/데이터베이스 캐시 문구와 문자열을 허용하고 성능을 향상시킨다.
PreparedStatement도 데이터베이스와 무관성을 제공합니다.표시된 SQL이 적을수록 잠재적인 SQL 문장의 데이터베이스 의존성은 작아집니다.
Prepared Statement는 많은 장점을 가지기 때문에 개발자들은 그것을 사용할 수 있습니다. 성능 때문이거나 한 줄의 SQL 문장에 변수가 없을 때만 일반적인 Statement를 사용할 수 있습니다.질의 및 처리 결과 보내기
데이터베이스에 SQL 문장을 실행하려면 Statement나Prepared Statement 실례가 필요합니다.일단 Statement나Prepared Statement를 가지고 있다면, 검색어를 보낼 수 있습니다.이렇게 하면 전체 결과가 포함된 ResultSet 인스턴스가 반환됩니다.Example 31-1은 이 과정을 보여 주었다.
Example 31-1. JDBC에서 간단한 검색 처리
이 예는 간단한 검색어를 보내고 줄마다 첫 번째 필드를 Statement로 출력합니다.
Statement st = db.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
while (rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
rs.close();
st.close();
이 예는Prepared Statement를 사용하여 앞과 같은 조회를 보내고 조회에서 수치를 만들 것입니다.
int foovalue = 500;
PreparedStatement st = db.prepareStatement("SELECT * FROM mytable WHERE columnfoo = ?");
st.setInt(1, foovalue);
ResultSet rs = st.executeQuery();
while (rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
rs.close();
st.close();
31.3.1. Statement 또는 PreparedStatement 인터페이스 사용
Statement 또는 PreparedStatement 인터페이스를 사용할 때는 다음 사항을 고려해야 합니다.
31.3.2. ResultSet(결과 세트) 인터페이스 사용
ResultSet 인터페이스를 사용할 때는 다음 사항을 고려해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.