Hibernate4.1配置数据库连接池 org.hibernate.service.jndi.JndiException:Unable to lookup JNDI name java:comp/env...

数据库连接池技术的基本原理:

由Web容器(如Tomcat)提供数据源对象,在程序中使用 JNDI 技术获得该对象。一般如果自己创建连接的话,用下面的代码获取数据源对象:

Context context = new InitialContext();

DataSource dataSource = (DataSource)context.lookup("java://comp/env/jdbc/mydb");

Connection conn = dataSource.getConnection();

这里mydb是要连接到的数据库名,一定要注意 java: 后面有双斜线,否则就会报出异常:

org.hibernate.service.jndi.JndiException:Unable to lookup JNDI name java:comp/env...

但其实如果使用Hibernate框架的话,就不用这样费事了。按照下面的步骤一步步来就OK了:

1. 找到tomcat安装目录,以 D:\Program Files\Apache Software Foundation\Tomcat 6.0\conf 为例,在 context.xml 文件中的<Context>标签下添加代码:

1 <!--Resource 设置数据库连接池的核心-->

2     <!--属性 name 数据源的名字       属性 auth 表示验证方式     type 资源的类型  -->     

3     <Resource name="jdbc/struts" auth="Container" type="javax.sql.DataSource"

4               maxActive="100" maxIdle="30" maxWait="10000"

5               username="root" password="****"

6               driverClassName="com.mysql.jdbc.Driver"

7               url="jdbc:mysql://192.168.1.173:3306/struts"/>

  我的数据库名称为struts,所以这里配置的名字也是struts。

2. 将JDBC的驱动jar包放到 tomcat 的 lib 文件夹下,如 D:\Program Files\Apache Software Foundation\Tomcat 6.0\lib。
3. 在项目的 web.xml 文件中添加如下代码:

1    <resource-ref>

2       <description>struts datasource</description>

3       <res-ref-name>jdbc/struts</res-ref-name>

4       <res-type>javax.sql.DataSource</res-type>

5       <res-auth>Container</res-auth>

6   </resource-ref>

  这里的各配置要和在 context.xml 文件中的配置一致。

4. 配置 hibernate.cfg.xml。可以使用视图直接选择 Use JNDI DataSource 选项,然后在DataSource栏中填入 "java://comp/env/jdbc/struts"。生成的代码:

 1 <?xml version='1.0' encoding='UTF-8'?>

 2 <!DOCTYPE hibernate-configuration PUBLIC

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

 4           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

 5 <!-- Generated by MyEclipse Hibernate Tools. -->

 6 <hibernate-configuration>

 7 

 8     <session-factory>        

 9         <property name="connection.datasource">

10             java://comp/env/jdbc/struts

11         </property>

12         <property name="dialect">

13             org.hibernate.dialect.MySQLDialect

14         </property>

15         

16         <property name="show_sql">true</property>

17         

18         <mapping resource="com/entity/Users.hbm.xml" />

19     </session-factory>

20 

21 </hibernate-configuration>

5. 使用MyEclipse插件添加的Hibernate框架的话,会生成一个 HibernateSessionFactory 类,直接调用这个类的静态函数 getSession() 就能获取到 Session 的一个实例。接下来的操作就跟没使用连接池是一样的了。

 

 

你可能感兴趣的:(Hibernate4)