学习hibernate时遇到的JNDI数据库缓冲池的配置

Tomcat的数据库缓冲池配置JNDI;为了降低数据库连接消耗的内存资源,建立缓冲池。

Tomcat8,jre1.7,数据库MySQL

Tomcat8.0手册

http://localhost:8080/docs/jndi-resources-howto.html

http://localhost:8080/docs/jndi-datasource-examples-howto.html

配置过程:1:将mysql-connector-java-5.1.26-bin.jar驱动jar包复制到Tomcat安装目录的lib目录下E:\Apache\Tomcat8.0\lib

2:修改Tomcat的启动配置文件E:\Apache\Tomcat8.0\conf\server.xml

  在server.xml的末尾处的</host>前添加:youProgrameNae指您的工程名,我这里是web 工程

youDataBaseName指您的数据库名字,请您读一读,就知道怎么配置了。

<Context path="/youProgrameNae" docBase="youProgrameNae" debug="5" reloadable="true" crossContext="true" >        
        <Resource 
             name="jdbc/mysql"
             auth="Container" 
             type="javax.sql.DataSource"
             maxActive="100" 
             maxIdle="30" 
             maxWait="10000"
             username="youMysqlName" 
             password="youMysqlPassword"
             driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost:3306/youDataBaseName?autoReconnect=true"/>
        </Context>
      </Host>

    </Engine>
  </Service>
</Server>

3:在youProgrameNae的web.xml文件后面添加<resource-ref></resource-ref>等,请您对比添加,这里的name需要和上面的name对应

  </welcome-file-list>
        
   <resource-ref>
       <description>MySQL DB Connection</description>
       <res-ref-name>jdbc/mysql</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>
  
</web-app>

4:下面我使用hibernate配置连接到数据库  hibernate.cfg.xml

hibernate.cfg.xml文件修改数据库连接的来源,可以看到,连接配置主要是

     <property name="hibernate.connection.datasource">java:/comp/env/jdbc/mysql</property>

这一句话。java:/comp/env/是固定写法 jdbc/mysql 可以修改,但几乎也是固定写法;下面是完整的hibernate.cfg.xml配置

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
          
<hibernate-configuration>
    <session-factory>
      <!--  
        <property name="connection.url">jdbc:mysql://localhost:3306/sjia</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
      -->
      <property name="hibernate.connection.datasource">java:/comp/env/jdbc/mysql</property>
      <property name="hibernate.show_sql">true</property>
        <!-- <mapping resource="com/SJia/Bean/user.hbm.xml" /> -->    
    </session-factory>
</hibernate-configuration>

5:hibernate连接数据库缓冲池编程测试

public class hibernate_connect {

public Session getSession()
    {
        Configuration cfg=new Configuration();//初始化配置文件类
        cfg.configure();//配置方法
        SessionFactory sf=cfg.buildSessionFactory();
        Session session=sf.openSession();
        return session;
    }
}

写一个servlet类 TestJNDI

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        hibernate_connect hiconn=new hibernate_connect();
        Session session=hiconn.getSession();
        System.out.println("-------------");
        //http://localhost:8080/docs/jndi-datasource-examples-howto.html
        //在jdbc数据源里面配置的
        System.out.println(session);
    }

浏览器直接访问

//http://localhost:8080/yourProgrameNane/TestJDNI

后台打印

可以看出,配置成功。

原理是tomcat启动时,server.xml配置了连接数据库名和密码等,name='java/mysql';web.xml配置了name='jdbc/mysql'

hibernate配置文件的连接设置更改了,为name='jdbc/mysql';;web.xml不添加配置似乎也可以,但是没人愿意这样吧。。

我这个项目是一个网站收藏夹的小demo,里面有数据库的注册,需要的可以下载参考。

主要是servlet和jsp的tag标签,包含软件设计的分层解耦设计思想,hibernate的配置,jdbc的持久化配置,jndi配置。

我就附上下载地址,为了自己以后查看吧。

算了,需要的留言,以后才上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值