มีพารามิเตอร์บางตัวในการกำหนดค่าแหล่งข้อมูลที่ฉันไม่ค่อยเข้าใจ ฉันจะไม่พูดถึงพารามิเตอร์ที่ฉันไม่เข้าใจ นี่คือสองพารามิเตอร์ที่ฉันใช้
ก่อนอื่น ไดรเวอร์ mysql JDBC 5.1 ในพาธ apache-tomcat-6.0.16lib ไม่ควรพลาด
สิ่งแรกคือการเตรียม apache-tomcat-6.0.16confcontext.xml ใน TomCat ดังนี้:
รหัส XML
<?xml version='1.0' encoding='utf-8'?>
<บริบท>
<ชื่อทรัพยากร = "jdbc/myTest" auth = "คอนเทนเนอร์"
ประเภท = "javax.sql.DataSource" ชื่อผู้ใช้ = "root" รหัสผ่าน = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/จุด" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</บริบท>
<?xml version='1.0' encoding='utf-8'?>
<บริบท>
<ชื่อทรัพยากร = "jdbc/myTest" auth = "คอนเทนเนอร์"
ประเภท = "javax.sql.DataSource" ชื่อผู้ใช้ = "root" รหัสผ่าน = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/จุด" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</บริบท>
name คือชื่อแหล่งข้อมูล รูปแบบคือ: "jdbc/data source name"
ไม่จำเป็นต้องบอกชื่อผู้ใช้ รหัสผ่าน รหัสผ่านที่นี่ว่างเปล่า
URL เหมือนกับการกำหนดค่าไดรเวอร์ JDBC
http://bizhi.knowsky.com/
ประการที่สองคือการกำหนดค่า .WebRoot/META-INF/context.xml ในโปรเจ็กต์:
รหัส XML
<?xml version="1.0" encoding="UTF-8"?>
<บริบท>
<ชื่อทรัพยากร = "jdbc/test" auth = "คอนเทนเนอร์"
ประเภท = "javax.sql.DataSource" ชื่อผู้ใช้ = "root" รหัสผ่าน = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/จุด" />
</บริบท>
<?xml version="1.0" encoding="UTF-8"?>
<บริบท>
<ชื่อทรัพยากร = "jdbc/test" auth = "คอนเทนเนอร์"
ประเภท = "javax.sql.DataSource" ชื่อผู้ใช้ = "root" รหัสผ่าน = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/จุด" />
</บริบท>มันเกือบจะเหมือนกับใน Tomcat โปรดทราบว่า context.xml ถูกสร้างขึ้นด้วยตัวเองภายใต้ META-INF
การใช้แหล่งข้อมูล:
รหัสจาวา
รายการ = ArrayList ใหม่ ();
การเชื่อมต่อการเชื่อมต่อ = null;
แหล่งข้อมูล ds = null;
คำสั่งที่เตรียมไว้ pst = null;
ResultSet rst = null;
String sqlStr = "ใส่เข้าไปในค่า `user`(`userNo`,`userName`) (?,?)";
พยายาม {
InitialContext ctx = InitialContext ใหม่ ();
ds = (แหล่งข้อมูล) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
สำหรับ (int i = 0; i <4; i++) {
pst.setString(1, "ดี" + i);
pst.setString(2, "isw" + i);
// ใช้แบตช์เพื่อถ่ายโอนการดำเนินการ SQL หลายรายการไปยังฐานข้อมูลเป็นหน่วย
// แนะนำ jdbc.batch_size ใน Hibernate ออนไลน์ที่ 30
pst.addBatch();
-
pst.executeBatch();
rst = pst.executeQuery("เลือก * จากผู้ใช้");
// Fetch Size คือการกำหนดจำนวนเรคคอร์ดที่ดึงมาจากฐานข้อมูลในแต่ละครั้งเมื่อ PreparStatement ของ JDBC อ่านข้อมูล
// jdbc.fetch_size ใน Hibernate แนะนำให้ใช้ทางออนไลน์ที่ 50
rst.setFetchSize(50);
ในขณะที่ (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
-
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
กลับข้อผิดพลาด;
} ในที่สุด {
พยายาม {
rst.ปิด();
pst.ปิด();
conn.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
-
-
รายการ = ArrayList ใหม่ ();
การเชื่อมต่อการเชื่อมต่อ = null;
แหล่งข้อมูล ds = null;
คำสั่งที่เตรียมไว้ pst = null;
ResultSet rst = null;
String sqlStr = "ใส่เข้าไปในค่า `user`(`userNo`,`userName`) (?,?)";
พยายาม {
InitialContext ctx = InitialContext ใหม่ ();
ds = (แหล่งข้อมูล) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
สำหรับ (int i = 0; i <4; i++) {
pst.setString(1, "ดี" + i);
pst.setString(2, "isw" + i);
// ใช้แบตช์เพื่อถ่ายโอนการดำเนินการ SQL หลายรายการไปยังฐานข้อมูลเป็นหน่วย
// แนะนำ jdbc.batch_size ใน Hibernate ออนไลน์ที่ 30
pst.addBatch();
-
pst.executeBatch();
rst = pst.executeQuery("เลือก * จากผู้ใช้");
// Fetch Size คือการกำหนดจำนวนเรคคอร์ดที่ดึงมาจากฐานข้อมูลในแต่ละครั้งเมื่อ PreparStatement ของ JDBC อ่านข้อมูล
// jdbc.fetch_size ใน Hibernate แนะนำให้ใช้ทางออนไลน์ที่ 50
rst.setFetchSize(50);
ในขณะที่ (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
-
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
กลับข้อผิดพลาด;
} ในที่สุด {
พยายาม {
rst.ปิด();
pst.ปิด();
conn.ปิด();
} จับ (SQLException e) {
e.printStackTrace();
-
} ให้ฉันพูดถึงมันข้างต้น ทุกคนบอกว่า Hibernate ดำเนินการฐานข้อมูลอย่างมีประสิทธิภาพมากกว่า JDBC แบบแมนนวล เนื่องจากมีการเพิ่มประสิทธิภาพบางอย่างสำหรับการสืบค้น อาจเป็นเพียงส่วนเล็ก ๆ ที่ฉันกล่าวถึงการใช้งานของพวกเขาที่นี่ .
เกี่ยวกับ Fectch Size บล็อกด้านล่าง Batch ให้คำอธิบายโดยละเอียดเพิ่มเติม
http://xuganggogo.javaeye.com/blog/440516
การใช้แหล่งข้อมูลใน Hibernate hibernate.cfg.xml
รหัส XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE การกำหนดค่าไฮเบอร์เนตสาธารณะ
"-//ไฮเบอร์เนต/การกำหนดค่าไฮเบอร์เนต DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- สร้างโดย MyEclipse Hibernate Tools -->
<การกำหนดค่าไฮเบอร์เนต>
<โรงงานเซสชัน>
<!-- ต่อไปนี้คือการกำหนดค่าของแหล่งข้อมูล -->
<ชื่อคุณสมบัติ="connection.datasource">
ชวา:comp/env/jdbc/test
</คุณสมบัติ>
<!-- ภาษาถิ่นของฐานข้อมูล -->
<ชื่อคุณสมบัติ="ภาษาถิ่น">
org.hibernate.dialect.MySQLDialect
</คุณสมบัติ>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<การแมปทรัพยากร = "com/isw2/entity/UserBean.hbm.xml" />
</โรงงานเซสชัน>
</ การกำหนดค่าไฮเบอร์เนต>
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE การกำหนดค่าไฮเบอร์เนตสาธารณะ
"-//ไฮเบอร์เนต/การกำหนดค่าไฮเบอร์เนต DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- สร้างโดย MyEclipse Hibernate Tools -->
<การกำหนดค่าไฮเบอร์เนต>
<โรงงานเซสชัน>
<!-- ต่อไปนี้คือการกำหนดค่าของแหล่งข้อมูล -->
<ชื่อคุณสมบัติ="connection.datasource">
ชวา:comp/env/jdbc/test
</คุณสมบัติ>
<!-- ภาษาถิ่นของฐานข้อมูล -->
<ชื่อคุณสมบัติ="ภาษาถิ่น">
org.hibernate.dialect.MySQLDialect
</คุณสมบัติ>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<การแมปทรัพยากร = "com/isw2/entity/UserBean.hbm.xml" />
</โรงงานเซสชัน>
</ การกำหนดค่าไฮเบอร์เนต>
เหตุผลที่พวกเราหลายคนยอมแพ้ครึ่งทางและรู้สึกไม่เต็มใจที่จะทำเช่นนั้นในชีวิตเพียงเพราะเราไม่ยึดติดกับอุดมคติของเรา ตราบใดที่เราไม่ยอมแพ้ อุดมคติของเราก็จะเป็นจริงในที่สุด