Tomcat6 下 MySQL 5.1 数据源配制

作者:互联网

2010-02-04

JSP教程

数据源配制中有一些参数,不太明白,不明白的咱不说.在这说两种我用过的.

 首先在apache-tomcat-6.0.16lib  路径下的  mysql JDBC 5.1  驱动不能少.

 第一种是在TomCat 里配制apache-tomcat-6.0.16confcontext.xml 如下:

Xml代码
 
 
            type="javax.sql.DataSource" username="root" password="" 
        driverClassName="com.mysql.jdbc.Driver" 
        url="jdbc:mysql://192.168.0.68:3306/points" /> 
    WEB-INF/web.xml 
 



    type="javax.sql.DataSource" username="root" password=""
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://192.168.0.68:3306/points" />
 WEB-INF/web.xml

 name 是数据源名称.格式是:"jdbc/数据源名称"

username,password 不用说了.这里password 密码为空.

url 和 JDBC 驱动配相同.

第二种是在项目里面配.WebRoot/META-INF/context.xml  中配:

Xml代码
 
 
            type="javax.sql.DataSource" username="root" password="" 
        driverClassName="com.mysql.jdbc.Driver" 
        url="jdbc:mysql://192.168.0.68:3306/points" /> 
 



    type="javax.sql.DataSource" username="root" password=""
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://192.168.0.68:3306/points" />
和在 Tomcat 里面几乎一样. context.xml  要注意是在 META-INF 下新建 是自己新建的.

 

 

数据源的使用:

Java代码
list = new ArrayList();  
Connection conn = null;  
DataSource ds = null;  
PreparedStatement pst = null;  
ResultSet rst = null;  
String sqlStr = "insert into `user`(`userNo`,`userName`) values (?,?)";  
try {  
    InitialContext ctx = new InitialContext();  
    ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");  
    conn = ds.getConnection();  
    pst = conn.prepareStatement(sqlStr);  
    pst.clearBatch();  
    for (int i = 0; i < 4; i++) {  
        pst.setString(1, "good " + i);  
        pst.setString(2, "isw " + i);  
        // 使用batch,将多个sql操作作为一个单元传输给数据库,  
        // Hibernate 中 jdbc.batch_size 网上推荐 30  
        pst.addBatch();  
    }  
    pst.executeBatch();  
    rst = pst.executeQuery("select * from user");  
    // Fetch Size 是设定JDBC的prepareStatement读取数据的时候每次从数据库中取出的记录条数,  
    // Hibernate 中 jdbc.fetch_size 网上推荐 50  
    rst.setFetchSize(50);  
    while (rst.next()) {  
        System.out.println(rst.getString(3));  
        list.add(rst.getString(3));  
    }  
} catch (Exception e) {  
    e.printStackTrace();  
    return ERROR;  
} finally {  
    try {  
        rst.close();  
        pst.close();  
        conn.close();  
    } catch (SQLException e) {  
        e.printStackTrace();  
    }  

list = new ArrayList();
Connection conn = null;
DataSource ds = null;
PreparedStatement pst = null;
ResultSet rst = null;
String sqlStr = "insert into `user`(`userNo`,`userName`) values (?,?)";
try {
 InitialContext ctx = new InitialContext();
 ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
 conn = ds.getConnection();
 pst = conn.prepareStatement(sqlStr);
 pst.clearBatch();
 for (int i = 0; i < 4; i++) {
  pst.setString(1, "good " + i);
  pst.setString(2, "isw " + i);
  // 使用batch,将多个sql操作作为一个单元传输给数据库,
  // Hibernate 中 jdbc.batch_size 网上推荐 30
  pst.addBatch();
 }
 pst.executeBatch();
 rst = pst.executeQuery("select * from user");
 // Fetch Size 是设定JDBC的prepareStatement读取数据的时候每次从数据库中取出的记录条数,
 // Hibernate 中 jdbc.fetch_size 网上推荐 50
 rst.setFetchSize(50);
 while (rst.next()) {
  System.out.println(rst.getString(3));
  list.add(rst.getString(3));
 }
} catch (Exception e) {
 e.printStackTrace();
 return ERROR;
} finally {
 try {
  rst.close();
  pst.close();
  conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}    上面说一下,大家都说Hibernate 执行数据库操作要比手动JDBC 效率要高,这是因为它对查询进行了一些优化,Fetch Size,Batch 也许只是冰山一角.说到这里就提了一下它们的用法.

 

关于 Fectch Size,Batch 下面的博客给出较详细的说明.

 

数据源在Hibernate 中的使用  hibernate.cfg.xml

Xml代码
 
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
          ""> 
 
 
 
     
                 
         
            java:comp/env/jdbc/test  
       
 
                 
         
            org.hibernate.dialect.MySQLDialect  
       
 
        25 
        50 
         
   
 
 


          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "">



 
               
 
   java:comp/env/jdbc/test
 

               
 
   org.hibernate.dialect.MySQLDialect
 

  25
  50
 
 

 
 

人生之所以的许许多多的半途而废及心有不甘,不过因为我们没有坚持自己的理想罢了,只要我们不放弃,理想终会实现.

 

相关标签:

Tomcat6 MySQL 5.1 数据源配制