hibernate 在tomcat7.X 下配置mysql数据源

先说一点题外话,LZ最近学习java web。今天刚看到hibernate,发现在hibernate配置数据源时网上的资料都太久远了,一般以tomcat 5 版本下的配置居多。而tomcat 7下的配置略有变化,新手找资料困难,可能会略受打击,故整理资料与大家共享,也可作备忘之用!若有不当之处,还请不吝赐教!



1.添加数据库驱动包mysql-connector-java-5.1.13-bin.jar加入到tomcat目录下的lib包中。


注意:网上几乎所有版本都说需要添加commons-dbcp-1.4.jar,commons-pool-1.5.4.jar和commons-collections.jar。

但是tomcat 7 已经不用添加这些jar文件了,因为tomcat 7的lib包下面已经集成了这些库。

官方集成文档上有:These libraries are located in a single JAR at $CATALINA_HOME/lib/tomcat-dbcp.jar

大概意思就是:这些库文件都位于一个单独的JAR文件中,该文件的路径是/lib/tomcat-dbcp.jar。

2.修改Tomcat_Home/conf/server.xml,</host>标签之前加入:

   <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest"/>

3.在context.xml中加入引用


<ResourceLink name="jdbc/TestDB" global="jdbc/TestDB"    
      type="javax.sql.DataSource"/> 

4.在你的工程项目的web.xml中加入<resource-ref>。

    <resource-ref>  
        <description>tomcat datasource test,one mysql datasource</description>  
        <res-ref-name>jdbc/TestDB</res-ref-name>  
        <res-type>javax.sql.DataSource</res-type>  
        <res-auth>Container</res-auth>  
    </resource-ref>

5.在hibernate.cfg.xml文件中配置数据库连接,这个有很多教程,此处便不再详述。

另外,注意数据源只有在web项目中才可以使用。

再次出来写个简单的servlet来输出hibernate 的session对象:

代码如下:

package com.amaker.servlet;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.hibernate.Session;


import com.amaker.util.HibernateUtil;


@SuppressWarnings("serial")

public class testServletextends HttpServlet {


/**

* Constructor of the object.

*/

public testServlet() {

super();

}


/**

* Destruction of the servlet. <br>

*/

public void destroy() {

super.destroy();// Just puts "destroy" string in log

// Put your code here

}


/**

* The doGet method of the servlet.<br>

*

* This method is called when a form has its tag value method equals to get.

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

HibernateUtil util = new HibernateUtil();

//HibernateUtil 类用来返回一个Session

对象,很简单,相信大家可以搞定。 Session session = util.getSession();

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

out.println("  <BODY>");

out.println(session);

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}


public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {


doGet(request, response);

}


/**

* Initialization of the servlet.<br>

*

* @throws ServletException if an error occurs

*/

public void init()throws ServletException {

// Put your code here

}


}

访问结果如图,返回一个session对象。





hibernate 在tomcat7.X 下配置mysql数据源,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。