هناك بعض المعلمات في تكوين مصدر البيانات التي لا أفهمها تمامًا، ولن أتحدث عن تلك التي لا أفهمها.
أولاً، لا يمكن أن يكون برنامج التشغيل mysql JDBC 5.1 في مسار Apache-tomcat-6.0.16lib مفقودًا.
الأول هو إعداد Apache-tomcat-6.0.16confcontext.xml في TomCat كما يلي:
كود اكس ام ال
<?xml version='1.0' encoding='utf-8'?>
<السياق>
<اسم المورد = "jdbc/myTest" auth = "الحاوية"
اكتب = "javax.sql.DataSource" اسم المستخدم = "الجذر" كلمة المرور = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</السياق>
<?xml version='1.0' encoding='utf-8'?>
<السياق>
<اسم المورد = "jdbc/myTest" auth = "الحاوية"
اكتب = "javax.sql.DataSource" اسم المستخدم = "الجذر" كلمة المرور = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</السياق>
الاسم هو اسم مصدر البيانات والتنسيق هو: "jdbc/اسم مصدر البيانات".
وغني عن القول اسم المستخدم وكلمة المرور هنا فارغة.
عنوان url هو نفس تكوين برنامج تشغيل JDBC.
http://bizhi.knowsky.com/
والثاني هو تكوين .WebRoot/META-INF/context.xml في المشروع:
كود اكس ام ال
<?xml version="1.0" encoding="UTF-8"?>
<السياق>
<اسم المورد = "jdbc/test" auth = "حاوية"
اكتب = "javax.sql.DataSource" اسم المستخدم = "الجذر" كلمة المرور = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</السياق>
<?xml version="1.0" encoding="UTF-8"?>
<السياق>
<اسم المورد = "jdbc/test" auth = "حاوية"
اكتب = "javax.sql.DataSource" اسم المستخدم = "الجذر" كلمة المرور = ""
driverClassName = "com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Context> إنه تقريبًا نفس ما هو موجود في Tomcat. يرجى ملاحظة أنه تم إنشاء context.xml بنفسك ضمن META-INF.
استخدام مصدر البيانات:
كود جافا
list = new ArrayList();
اتصال كون = فارغ؛
DataSource ds = null;
PreparedStatement pst = null;
ResultSet rst = null;
String sqlStr = "أدخل في قيم `user`(`userNo`,`userName`) (؟,?)";
يحاول {
InitialContext ctx = new PrimaryContext();
ds = (DataSource) 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, "good" + i);
pst.setString(2, "isw " + i);
// استخدم الدُفعة لنقل عمليات SQL المتعددة إلى قاعدة البيانات كوحدة واحدة.
يوصى باستخدام // jdbc.batch_size في وضع السبات عبر الإنترنت عند الساعة 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("اختر * من المستخدم");
// حجم الجلب هو تعيين عدد السجلات التي يتم جلبها من قاعدة البيانات في كل مرة يقرأ فيها PreparStatement الخاص بـ JDBC البيانات.
يوصى باستخدام // jdbc.fetch_size في وضع السبات عبر الإنترنت عند سن 50
rst.setFetchSize(50);
بينما (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} قبض (الاستثناء ه) {
printStackTrace();
خطأ في الإرجاع؛
} أخيراً {
يحاول {
rst.Close();
pst. Close();
conn.Close();
} قبض على (SQLException ه) {
printStackTrace();
}
}
list = new ArrayList();
اتصال كون = فارغ؛
DataSource ds = null;
PreparedStatement pst = null;
ResultSet rst = null;
String sqlStr = "أدخل في قيم `user`(`userNo`,`userName`) (؟,?)";
يحاول {
InitialContext ctx = new PrimaryContext();
ds = (DataSource) 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, "good" + i);
pst.setString(2, "isw " + i);
// استخدم الدُفعة لنقل عمليات SQL المتعددة إلى قاعدة البيانات كوحدة واحدة.
يوصى باستخدام // jdbc.batch_size في وضع السبات عبر الإنترنت عند الساعة 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("اختر * من المستخدم");
// حجم الجلب هو تعيين عدد السجلات التي يتم جلبها من قاعدة البيانات في كل مرة يقرأ فيها PreparStatement الخاص بـ JDBC البيانات.
يوصى باستخدام // jdbc.fetch_size في وضع السبات عبر الإنترنت عند سن 50
rst.setFetchSize(50);
بينما (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} قبض (الاستثناء ه) {
printStackTrace();
خطأ في الإرجاع؛
} أخيراً {
يحاول {
rst.Close();
pst. Close();
conn.Close();
} قبض على (SQLException ه) {
printStackTrace();
}
} دعني أتحدث عن ذلك أعلاه. يقول الجميع أن Hibernate ينفذ عمليات قاعدة البيانات بشكل أكثر كفاءة من JDBC اليدوي، وذلك لأنه يحتوي على بعض التحسينات لحجم الجلب والدفعة، وقد يكون ذلك مجرد قمة جبل الجليد التي ذكرتها هنا .
فيما يتعلق بحجم Fectch، تقدم المدونة الموجودة أسفل Batch شرحًا أكثر تفصيلاً.
http://xuganggogo.javaeye.com/blog/440516
استخدام مصادر البيانات في Hibernate hibernate.cfg.xml
كود اكس ام ال
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE تكوين السبات العام
"-//تكوين السبات/الإسبات DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- تم الإنشاء بواسطة أدوات MyEclipse Hibernate -->
<تكوين السبات>
<مصنع الجلسة>
<!-- فيما يلي تكوين مصدر البيانات -->
<اسم الخاصية = "connection.datasource">
جافا:comp/env/jdbc/test
</خاصية>
<!-- لهجة قاعدة البيانات -->
<اسم الخاصية = "اللهجة">
org.hibernate.dialect.MySQLDialect
</خاصية>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping Resources="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 -->
<تكوين السبات>
<مصنع الجلسة>
<!-- فيما يلي تكوين مصدر البيانات -->
<اسم الخاصية = "connection.datasource">
جافا:comp/env/jdbc/test
</خاصية>
<!-- لهجة قاعدة البيانات -->
<اسم الخاصية = "اللهجة">
org.hibernate.dialect.MySQLDialect
</خاصية>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping Resources="com/isw2/entity/UserBean.hbm.xml" />
</جلسة-مصنع>
</تكوين السبات>
السبب الذي يجعل الكثير منا يستسلمون في منتصف الطريق ويشعرون بعدم الرغبة في القيام بذلك في الحياة هو أننا لا نلتزم بمثلنا العليا طالما أننا لا نستسلم، فإن مُثُلنا ستتحقق في النهاية.