Il y a certains paramètres dans la configuration de la source de données que je ne comprends pas très bien. Je ne parlerai pas de ceux que je ne comprends pas. En voici deux que j'ai utilisés.
Tout d'abord, le pilote mysql JDBC 5.1 dans le chemin apache-tomcat-6.0.16lib ne peut pas manquer.
La première consiste à préparer apache-tomcat-6.0.16confcontext.xml dans TomCat comme suit :
Code XML
<?xml version='1.0' encoding='utf-8'?>
<Contexte>
<Nom de la ressource="jdbc/myTest" auth="Conteneur"
type="javax.sql.DataSource" nom d'utilisateur="root" mot de passe=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Contexte>
<?xml version='1.0' encoding='utf-8'?>
<Contexte>
<Nom de la ressource="jdbc/myTest" auth="Conteneur"
type="javax.sql.DataSource" nom d'utilisateur="root" mot de passe=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Contexte>
name est le nom de la source de données. Le format est : "jdbc/nom de la source de données".
Inutile de dire nom d'utilisateur, mot de passe. Le mot de passe ici est vide.
L'URL est la même que celle de la configuration du pilote JDBC.
http://bizhi.knowsky.com/
La seconde consiste à configurer .WebRoot/META-INF/context.xml dans le projet :
Code XML
<?xml version="1.0" encoding="UTF-8"?>
<Contexte>
<Nom de la ressource="jdbc/test" auth="Conteneur"
type="javax.sql.DataSource" nom d'utilisateur="root" mot de passe=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Contexte>
<?xml version="1.0" encoding="UTF-8"?>
<Contexte>
<Nom de la ressource="jdbc/test" auth="Conteneur"
type="javax.sql.DataSource" nom d'utilisateur="root" mot de passe=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
</Context>C'est presque la même chose que dans Tomcat. Veuillez noter que context.xml est créé par vous-même sous META-INF.
Utilisation de la source de données :
Code Java
liste = new ArrayList();
Connexion de connexion = null ;
Source de données ds = null ;
PreparedStatement pst = null ;
ResultSet premier = null ;
String sqlStr = "insérer dans les valeurs `user`(`userNo`,`userName`) (?,?)" ;
essayer {
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
pour (int je = 0; je < 4; i++) {
pst.setString(1, "bon" + i);
pst.setString(2, "isw " + i);
// Utilisez batch pour transférer plusieurs opérations SQL vers la base de données en tant qu'unité.
// jdbc.batch_size dans Hibernate est recommandé en ligne à 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("select * from user");
// Fetch Size consiste à définir le nombre d'enregistrements extraits de la base de données à chaque fois que le prepareStatement de JDBC lit les données.
// jdbc.fetch_size dans Hibernate est recommandé en ligne à 50
rst.setFetchSize(50);
while (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} attraper (Exception e) {
e.printStackTrace();
renvoyer ERREUR ;
} enfin {
essayer {
rst.close();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
liste = new ArrayList();
Connexion de connexion = null ;
Source de données ds = null ;
PreparedStatement pst = null ;
ResultSet premier = null ;
String sqlStr = "insérer dans les valeurs `user`(`userNo`,`userName`) (?,?)" ;
essayer {
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
pour (int je = 0; je < 4; i++) {
pst.setString(1, "bon" + i);
pst.setString(2, "isw " + i);
// Utilisez batch pour transférer plusieurs opérations SQL vers la base de données en tant qu'unité.
// jdbc.batch_size dans Hibernate est recommandé en ligne à 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("select * from user");
// Fetch Size consiste à définir le nombre d'enregistrements extraits de la base de données à chaque fois que le prepareStatement de JDBC lit les données.
// jdbc.fetch_size dans Hibernate est recommandé en ligne à 50
rst.setFetchSize(50);
while (rst.next()) {
System.out.println(rst.getString(3));
list.add(rst.getString(3));
}
} attraper (Exception e) {
e.printStackTrace();
renvoyer ERREUR ;
} enfin {
essayer {
rst.close();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} Laissez-moi en parler ci-dessus. Tout le monde dit qu'Hibernate effectue les opérations de base de données plus efficacement que le JDBC manuel. C'est parce qu'il propose certaines optimisations pour les requêtes Fetch Size et Batch, ce n'est peut-être que la pointe de l'iceberg. .
Concernant Fetch Size, le blog ci-dessous Batch donne une explication plus détaillée.
http://xuganggogo.javaeye.com/blog/440516
L'utilisation de sources de données dans Hibernate hibernate.cfg.xml
Code XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE configuration de mise en veille prolongée PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Généré par MyEclipse Hibernate Tools -->.
<configuration de mise en veille prolongée>
<usine-de-session>
<!-- Voici la configuration de la source de données -->
<nom de la propriété="connection.datasource">
java:comp/env/jdbc/test
</propriété>
<!-- Dialecte de base de données -->
<nom de la propriété="dialecte">
org.hibernate.dialect.MySQLDialect
</propriété>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping resource="com/isw2/entity/UserBean.hbm.xml" />
</usine-de-session>
</configuration-hibernate>
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE configuration de mise en veille prolongée PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Généré par MyEclipse Hibernate Tools -->.
<configuration de mise en veille prolongée>
<usine-de-session>
<!-- Voici la configuration de la source de données -->
<nom de la propriété="connection.datasource">
java:comp/env/jdbc/test
</propriété>
<!-- Dialecte de base de données -->
<nom de la propriété="dialecte">
org.hibernate.dialect.MySQLDialect
</propriété>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping resource="com/isw2/entity/UserBean.hbm.xml" />
</usine-de-session>
</configuration-hibernate>
La raison pour laquelle beaucoup d’entre nous abandonnent à mi-chemin et ne se sentent pas disposés à le faire dans la vie est simplement parce que nous ne nous en tenons pas à nos idéaux. Tant que nous n’abandonnons pas, nos idéaux finiront par se réaliser.