В конфигурации источника данных есть некоторые параметры, которые мне не совсем понятны. О тех, в которых я не разбираюсь, говорить не буду. Вот два, которые я использовал.
Прежде всего, драйвер mysql JDBC 5.1 в пути apache-tomcat-6.0.16lib не может отсутствовать.
Первый — подготовить apache-tomcat-6.0.16confcontext.xml в TomCat следующим образом:
XML-код
<?xml version='1.0'coding='utf-8'?>
<Контекст>
<Resource name="jdbc/myTest" auth="Container"
type="javax.sql.DataSource" имя пользователя="root" пароль=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Контекст>
<?xml version='1.0'coding='utf-8'?>
<Контекст>
<Resource name="jdbc/myTest" auth="Container"
type="javax.sql.DataSource" имя пользователя="root" пароль=""
driverClassName="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"coding="UTF-8"?>
<Контекст>
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource" имя пользователя="root" пароль=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Контекст>
<?xml version="1.0"coding="UTF-8"?>
<Контекст>
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource" имя пользователя="root" пароль=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Context>Это почти то же самое, что и в Tomcat. Обратите внимание, что context.xml создается вами в формате META-INF.
Использование источника данных:
Java-код
список = новый ArrayList();
Соединение конн = ноль;
Источник данных ds = ноль;
ReadedStatement pst = null;
ResultSet первый = ноль;
String sqlStr = "вставить в `user`(`userNo`,`userName`) значения (?,?)";
пытаться {
InitialContext ctx = новый InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
для (int я = 0; я <4; я++) {
pst.setString(1, "хорошо" + я);
pst.setString(2, "isw" + я);
// Используйте пакетную обработку для передачи нескольких операций SQL в базу данных как единое целое.
// jdbc.batch_size в Hibernate рекомендуется использовать онлайн на уровне 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("выберите * у пользователя");
// Размер выборки предназначен для установки количества записей, извлекаемых из базы данных каждый раз, когда подготовка оператора JDBC считывает данные.
// jdbc.fetch_size в Hibernate рекомендуется онлайн на уровне 50
rst.setFetchSize(50);
в то время как (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} catch (Исключение е) {
е.printStackTrace();
вернуть ОШИБКУ;
} окончательно {
пытаться {
первый.закрыть();
пст.закрыть();
конн.закрыть();
} catch (SQLException e) {
е.printStackTrace();
}
}
список = новый ArrayList();
Соединение конн = ноль;
Источник данных ds = ноль;
ReadedStatement pst = null;
ResultSet первый = ноль;
String sqlStr = "вставить в `user`(`userNo`,`userName`) значения (?,?)";
пытаться {
InitialContext ctx = новый InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
для (int я = 0; я <4; я++) {
pst.setString(1, "хорошо" + я);
pst.setString(2, "isw" + я);
// Используйте пакетную обработку для передачи нескольких операций SQL в базу данных как единое целое.
// jdbc.batch_size в Hibernate рекомендуется использовать онлайн на уровне 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("выберите * у пользователя");
// Размер выборки предназначен для установки количества записей, извлекаемых из базы данных каждый раз, когда подготовка оператора JDBC считывает данные.
// jdbc.fetch_size в Hibernate рекомендуется онлайн на уровне 50
rst.setFetchSize(50);
в то время как (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} catch (Исключение е) {
е.printStackTrace();
вернуть ОШИБКУ;
} окончательно {
пытаться {
первый.закрыть();
пст.закрыть();
конн.закрыть();
} catch (SQLException e) {
е.printStackTrace();
}
} Позвольте мне поговорить об этом выше. Все говорят, что Hibernate выполняет операции с базой данных более эффективно, чем ручной JDBC. Это связано с тем, что в нем есть некоторые оптимизации для запросов. Возможно, это лишь верхушка айсберга. .
Что касается размера Fectch, в блоге ниже Batch дается более подробное объяснение.
http://xuganggogo.javaeye.com/blog/440516
Использование источников данных в Hibernate hibernate.cfg.xml
XML-код
<?xml version='1.0'coding='UTF-8'?>
<!DOCTYPE hibernate-конфигурация PUBLIC
"-//Hibernate/Конфигурация спящего режима DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Создано MyEclipse Hibernate Tools -->
<конфигурация спящего режима>
<фабрика-сессии>
<!-- Ниже приведена конфигурация источника данных -->
<имя свойства="connection.datasource">
Java: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" />
</сессионная фабрика>
</hibernate-конфигурация>
<?xml version='1.0'coding='UTF-8'?>
<!DOCTYPE hibernate-конфигурация PUBLIC
"-//Hibernate/Конфигурация спящего режима DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Создано MyEclipse Hibernate Tools -->.
<конфигурация спящего режима>
<фабрика-сессии>
<!-- Ниже приведена конфигурация источника данных -->
<имя свойства="connection.datasource">
Java: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" />
</сессионная фабрика>
</hibernate-конфигурация>
Причина, по которой многие из нас сдаются на полпути и не хотят этого делать в жизни, заключается в том, что мы не придерживаемся своих идеалов. Пока мы не сдаемся, наши идеалы в конечном итоге сбудутся.