데이터 소스 구성에는 제가 잘 이해하지 못하는 몇 가지 매개변수가 있습니다. 제가 사용한 두 가지 매개변수에 대해서는 언급하지 않겠습니다.
우선 apache-tomcat-6.0.16lib 경로에 mysql JDBC 5.1 드라이버가 빠질 수 없습니다.
첫 번째는 TomCat에서 apache-tomcat-6.0.16confcontext.xml을 다음과 같이 준비하는 것입니다.
XML 코드
<?xml 버전='1.0' 인코딩='utf-8'?>
<컨텍스트>
<리소스 이름="jdbc/myTest" auth="컨테이너"
유형="javax.sql.DataSource" 사용자 이름="루트" 비밀번호=""
드라이버클래스이름="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</컨텍스트>
<?xml 버전='1.0' 인코딩='utf-8'?>
<컨텍스트>
<리소스 이름="jdbc/myTest" auth="컨테이너"
유형="javax.sql.DataSource" 사용자 이름="루트" 비밀번호=""
드라이버클래스이름="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</컨텍스트>
name은 데이터 소스 이름입니다. 형식은 "jdbc/데이터 소스 이름"입니다.
말할 것도 없이 사용자 이름, 비밀번호는 비어 있습니다.
URL은 JDBC 드라이버 구성과 동일합니다.
http://bizhi.knowsky.com/
두 번째는 프로젝트에서 .WebRoot/META-INF/context.xml을 구성하는 것입니다.
XML 코드
<?xml version="1.0" 인코딩="UTF-8"?>
<컨텍스트>
<리소스 이름="jdbc/test" auth="컨테이너"
유형="javax.sql.DataSource" 사용자 이름="루트" 비밀번호=""
드라이버클래스이름="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</컨텍스트>
<?xml version="1.0" 인코딩="UTF-8"?>
<컨텍스트>
<리소스 이름="jdbc/test" auth="컨테이너"
유형="javax.sql.DataSource" 사용자 이름="루트" 비밀번호=""
드라이버클래스이름="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Context>Tomcat과 거의 동일합니다. META-INF 아래에 context.xml을 직접 생성하니 참고하세요.
데이터 소스 사용법:
자바 코드
목록 = 새로운 ArrayList();
연결 연결 = null;
데이터소스 ds = null;
준비된 진술 pst = null;
결과 집합 첫 번째 = null;
String sqlStr = "`user`(`userNo`,`userName`) 값에 삽입 (?,?)";
노력하다 {
초기컨텍스트 ctx = 새로운 초기컨텍스트();
ds = (데이터 소스) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
for (int i = 0; i < 4; i++) {
pst.setString(1, "좋음" + i);
pst.setString(2, "isw " + i);
// 여러 SQL 작업을 하나의 단위로 데이터베이스에 전송하려면 일괄 처리를 사용합니다.
// Hibernate의 jdbc.batch_size는 30에서 온라인으로 권장됩니다.
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("사용자로부터 * 선택");
// Fetch Size는 JDBC의 prepareStatement가 데이터를 읽을 때마다 데이터베이스에서 가져오는 레코드 수를 설정하는 것입니다.
// Hibernate의 jdbc.fetch_size는 50에서 온라인으로 권장됩니다.
rst.setFetchSize(50);
동안(rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} 잡기(예외 e) {
e.printStackTrace();
오류를 반환합니다.
} 마지막으로 {
노력하다 {
먼저.닫기();
pst.close();
conn.close();
} 잡기(SQLException e) {
e.printStackTrace();
}
}
목록 = 새로운 ArrayList();
연결 연결 = null;
데이터소스 ds = null;
준비된 진술 pst = null;
결과 집합 첫 번째 = null;
String sqlStr = "`user`(`userNo`,`userName`) 값에 삽입 (?,?)";
노력하다 {
초기컨텍스트 ctx = 새로운 초기컨텍스트();
ds = (데이터 소스) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
for (int i = 0; i < 4; i++) {
pst.setString(1, "좋음" + i);
pst.setString(2, "isw " + i);
// 여러 SQL 작업을 하나의 단위로 데이터베이스에 전송하려면 일괄 처리를 사용합니다.
// Hibernate의 jdbc.batch_size는 30에서 온라인으로 권장됩니다.
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("사용자로부터 * 선택");
// Fetch Size는 JDBC의 prepareStatement가 데이터를 읽을 때마다 데이터베이스에서 가져오는 레코드 수를 설정하는 것입니다.
// Hibernate의 jdbc.fetch_size는 50에서 온라인으로 권장됩니다.
rst.setFetchSize(50);
동안(rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} 잡기(예외 e) {
e.printStackTrace();
오류를 반환합니다.
} 마지막으로 {
노력하다 {
먼저.닫기();
pst.close();
conn.close();
} 잡기(SQLException e) {
e.printStackTrace();
}
} 위에서 그것에 대해 이야기하겠습니다. 모두가 Hibernate가 수동 JDBC보다 데이터베이스 작업을 더 효율적으로 수행한다고 말합니다. 이는 이것이 쿼리에 대한 일부 최적화를 가지고 있기 때문입니다. 여기서는 Fetch Size와 Batch의 사용법을 언급했습니다. .
Fectch Size에 대해서는 Batch 아래 블로그에 더 자세한 설명이 나와 있습니다.
http://xuganggogo.javaeye.com/blog/440516
Hibernate hibernate.cfg.xml에서 데이터 소스의 사용
XML 코드
<?xml 버전='1.0' 인코딩='UTF-8'?>
<!DOCTYPE 최대 절전 모드 구성 PUBLIC
"-//최대 절전 모드/최대 절전 모드 구성 DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- MyEclipse Hibernate 도구에 의해 생성됨 -->
<최대 절전 모드 구성>
<세션 팩토리>
<!-- 데이터소스 구성은 다음과 같습니다 -->
<속성 이름="connection.datasource">
자바:컴포넌트/env/jdbc/테스트
</property>
<!-- 데이터베이스 방언 -->
<속성 이름="방언">
org.hibernate.dialect.MySQLDialect
</property>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<매핑 리소스="com/isw2/entity/UserBean.hbm.xml" />
</세션 팩토리>
</hibernate-configuration>
<?xml 버전='1.0' 인코딩='UTF-8'?>
<!DOCTYPE 최대 절전 모드 구성 PUBLIC
"-//최대 절전 모드/최대 절전 모드 구성 DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- MyEclipse Hibernate 도구에 의해 생성됨 -->
<최대 절전 모드 구성>
<세션 팩토리>
<!-- 데이터소스 구성은 다음과 같습니다 -->
<속성 이름="connection.datasource">
자바:컴포넌트/env/jdbc/테스트
</property>
<!-- 데이터베이스 방언 -->
<속성 이름="방언">
org.hibernate.dialect.MySQLDialect
</property>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<매핑 리소스="com/isw2/entity/UserBean.hbm.xml" />
</세션 팩토리>
</hibernate-configuration>
우리 중 많은 사람들이 인생에서 포기하고 싶지 않은 이유는 단지 우리가 포기하지 않는 한 우리의 이상은 결국 실현될 것이기 때문입니다.