Existem alguns parâmetros na configuração da fonte de dados que não entendo muito bem. Não vou falar sobre aqueles que não entendo.
Primeiro de tudo, o driver mysql JDBC 5.1 no caminho apache-tomcat-6.0.16lib não pode estar faltando.
A primeira é preparar apache-tomcat-6.0.16confcontext.xml no TomCat da seguinte forma:
Código XML
<?xml versão='1.0' codificação='utf-8'?>
<Contexto>
<Nome do recurso="jdbc/myTest" auth="Container"
tipo = "javax.sql.DataSource" nome de usuário = "root" senha = ""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/pontos" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Contexto>
<?xml versão='1.0' codificação='utf-8'?>
<Contexto>
<Nome do recurso="jdbc/myTest" auth="Container"
tipo = "javax.sql.DataSource" nome de usuário = "root" senha = ""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/pontos" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Contexto>
name é o nome da fonte de dados. O formato é: "jdbc/nome da fonte de dados".
Escusado será dizer nome de usuário, senha A senha aqui está vazia.
A URL é a mesma da configuração do driver JDBC.
http://bizhi.knowsky.com/
A segunda é configurar .WebRoot/META-INF/context.xml no projeto:
Código XML
<?xml versão="1.0" codificação="UTF-8"?>
<Contexto>
<Nome do recurso="jdbc/test" auth="Container"
tipo = "javax.sql.DataSource" nome de usuário = "root" senha = ""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/pontos" />
</Contexto>
<?xml versão="1.0" codificação="UTF-8"?>
<Contexto>
<Nome do recurso="jdbc/test" auth="Container"
tipo = "javax.sql.DataSource" nome de usuário = "root" senha = ""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/pontos" />
</Context>É quase igual ao Tomcat. Observe que context.xml é criado por você mesmo no META-INF.
Uso da fonte de dados:
Código Java
lista = new ArrayList();
Conexão conexão = null;
Fonte de dados ds = null;
PreparedStatement pst = null;
ResultSet primeiro = null;
String sqlStr = "inserir em valores `user`(`userNo`,`userName`) (?,?)";
tentar {
InitialContext ctx = new InitialContext();
ds = (Fonte de dados) ctx.lookup("java:comp/env/jdbc/test");
conexão = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
for (int i = 0; i < 4; i++) {
pst.setString(1, "bom" + i);
pst.setString(2, "isw" + i);
// Use lote para transferir múltiplas operações SQL para o banco de dados como uma unidade.
// jdbc.batch_size no Hibernate é recomendado online aos 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("selecione * do usuário");
// Fetch Size serve para definir o número de registros buscados do banco de dados cada vez que o prepareStatement do JDBC lê dados.
// jdbc.fetch_size no Hibernate é recomendado online aos 50
primeiro.setFetchSize(50);
enquanto (rst.next()) {
System.out.println(rst.getString(3));
lista.add(rst.getString(3));
}
} catch (Exceção e) {
e.printStackTrace();
retornar ERRO;
} finalmente {
tentar {
primeiro.fechar();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
lista = new ArrayList();
Conexão conexão = null;
Fonte de dados ds = null;
PreparedStatement pst = null;
ResultSet primeiro = null;
String sqlStr = "inserir em valores `user`(`userNo`,`userName`) (?,?)";
tentar {
InitialContext ctx = new InitialContext();
ds = (Fonte de dados) ctx.lookup("java:comp/env/jdbc/test");
conexão = ds.getConnection();
pst = conn.prepareStatement(sqlStr);
pst.clearBatch();
for (int i = 0; i < 4; i++) {
pst.setString(1, "bom" + i);
pst.setString(2, "isw" + i);
// Use lote para transferir múltiplas operações SQL para o banco de dados como uma unidade.
// jdbc.batch_size no Hibernate é recomendado online aos 30
pst.addBatch();
}
pst.executeBatch();
rst = pst.executeQuery("selecione * do usuário");
// Fetch Size serve para definir o número de registros buscados do banco de dados cada vez que o prepareStatement do JDBC lê dados.
// jdbc.fetch_size no Hibernate é recomendado online aos 50
primeiro.setFetchSize(50);
enquanto (rst.next()) {
System.out.println(rst.getString(3));
lista.add(rst.getString(3));
}
} catch (Exceção e) {
e.printStackTrace();
retornar ERRO;
} finalmente {
tentar {
primeiro.fechar();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} Deixe-me falar sobre isso acima. Todo mundo diz que o Hibernate executa operações de banco de dados com mais eficiência do que o JDBC manual. Isso ocorre porque ele possui algumas otimizações para consultas de tamanho e lote que podem ser apenas a ponta do iceberg. .
Em relação ao Fectch Size, o blog abaixo do Batch dá uma explicação mais detalhada.
http://xuganggogo.javaeye.com/blog/440516
O uso de fontes de dados no Hibernate hibernate.cfg.xml
Código XML
<?xml versão='1.0' codificação='UTF-8'?>
<!DOCTYPE configuração de hibernação PUBLIC
"-//Hibernação/Configuração de hibernação DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Gerado pelas ferramentas MyEclipse Hibernate -->.
<configuração de hibernação>
<fábrica de sessão>
<!-- A seguir está a configuração da fonte de dados -->
<nome da propriedade="connection.datasource">
java:comp/env/jdbc/test
</propriedade>
<!-- Dialeto do banco de dados -->
<nome da propriedade="dialeto">
org.hibernate.dialect.MySQLDialect
</propriedade>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping resource="com/isw2/entity/UserBean.hbm.xml" />
</session-factory>
</hibernate-configuration>
<?xml versão='1.0' codificação='UTF-8'?>
<!DOCTYPE configuração de hibernação PUBLIC
"-//Hibernação/Configuração de hibernação DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<!-- Gerado pelas ferramentas MyEclipse Hibernate -->.
<configuração de hibernação>
<fábrica de sessão>
<!-- A seguir está a configuração da fonte de dados -->
<nome da propriedade="connection.datasource">
java:comp/env/jdbc/test
</propriedade>
<!-- Dialeto do banco de dados -->
<nome da propriedade="dialeto">
org.hibernate.dialect.MySQLDialect
</propriedade>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.fetch_size">50</property>
<mapping resource="com/isw2/entity/UserBean.hbm.xml" />
</session-factory>
</hibernate-configuration>
A razão pela qual muitos de nós desistimos no meio do caminho e não nos sentimos dispostos a fazê-lo na vida é simplesmente porque não nos apegamos aos nossos ideais. Enquanto não desistirmos, os nossos ideais acabarão por se tornar realidade.