Hibernate使用数据库连接池
来源:互联网 发布:公安部网络安全局 编辑:程序博客网 时间:2024/05/17 01:45
java应用程序开发中,访问和操作数据库一般通过JDBC等技术实现,在基于数据库的web系统中,简历数据库连接的操作将是系统中代价最大的操作之一,通常成为制约网站速度的瓶颈。
使用传统模式时,必须去管理每一个连接,确保它们能被正确关闭,如果出现程序异常而导致某些连接未能关闭,将导致数据库系统中的内存泄漏,最终将不得不重启数据库。
连接池技术:初始化时先简历一些连接并存放在连接池中备用,当应用程序需要简历数据库连接,只需从连接池中取一个未使用的连接即可,不必新建,用完放回连接池。连接池可以释放超过最大空闲时间的数据库连接,以避免没有释放而造成的数据库连接遗漏。
由于数据源(DataSource)对象是由Web容器(如Tomcat)提供的,因此无法在程序中使用创建实例的方法产生数据源对象。这时可以使用JNDI技术获得数据源对象。可以把它理解为一种将对象和名字捆绑的技术,对象工厂负责生产出对象,这些对象都与唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用。
javax.naming包提供了Context接口,该接口提供两种常用方法:
①void bind(String name,Object object):用于将名字绑定到对象,所有中间上下文和目标上下文都必须已经存在。
②Object lookup(String name):用于检索指定名字绑定的对象。若name为空,则返回此上下文的一个新实例。
例:Context context=new InitialContext():
DataSource dataSource=(Datasource)context.lookup("java:comp/env/jdbc/bookshop");
//获取数据库连接对象
Connection conn=dataSource.getConnection();
配置数据源名称
①配置context.xml文件:在Tomcat根目录/conf/context.xml文件中的<Context>节点中添加<Resource>节点:
<Resource name="jdbc/bookshop" auth="Contariner" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/bookshop" />//标注编码不能用&,要用&如:url="jdbc:mysql://localhost:3306/bookshop?useUnicode=true&characterEncoding=utf-8"
②创建并配置web.xml文件
<web-app>节点下添加<resource-ref>子节点:
<resource-ref>
<description>Bookshop DataSource</description>
<res-ref-name>jdbc/bookshop</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
③添加数据库驱动文件:通过数据源访问数据库,由于数据源由Tomcat创建并维护,所以需要将MuSQL的驱动程序复制到Tomcat根目录的lib下。
在HIbernate中使用数据库连接池:
在hibernate.cfg.xml文件的Configuration视图中,选择Use JNDI DataSource指定JNDI数据源,DataSource输入“java:comp/env/jdbc/bookshop”
Dialect选择MySQL,其他项可以不选择。完成配置,进行测试:
项目中创建页面TestConnectionPool.jsp
<%@ page import="com.hibtest2.TestCriteria %">
<% TestCriteria tc=new TestCriteria(); tc.testCriteria_1(); %>页面调用需要连接数据库的方法,启动Tomcat,打开页面,控制台输出连接数据库查询到的信息。
注意:因为是通过数据源的连接池打开的数据库,所以只能通过Tomcat来连接,在项目中单独运行测试方法无法再获得数据库连接,出错:Error parsing JNDI name。
- Hibernate使用数据库连接池
- Hibernate使用数据库连接池
- 怎样在hibernate中使用数据库连接池
- 怎样在hibernate中使用数据库连接池
- 怎样在hibernate中使用数据库连接池
- hibernate设置使用C3P0数据库连接池
- 扩展Hibernate使用自定义数据库连接池
- hibernate 数据库连接池
- hibernate配置数据库连接池
- 数据库连接池(hibernate)
- Hibernate的数据库连接池
- hibernate配置数据库连接池
- LOG4J使用Hibernate管理数据库连接
- 配置tomcat数据库连接池及使用数据库连接池(hibernate数据源配置和使用)
- 配置tomcat数据库连接池及使用数据库连接池(hibernate数据源配置和使用)
- 使用数据库连接池建立数据库连接
- Hibernate 配置数据库连接池问题.
- Hibernate中的数据库连接池配置
- 【caffe学习笔记】Common Layers 普通层
- Python爬虫入门(一)写在前面
- linux(Ubuntu16.04LTS)中安装pycharm
- 为猿七年有余,痒否?痛否?
- Unreal Engine使用C++入门示例
- Hibernate使用数据库连接池
- MFC基本技术
- [LeetCode]421. Maximum XOR of Two Numbers in an Array
- Mplayer源代码编译
- 日程部件增减行高
- 【caffe学习笔记】layer层简介
- leetcode:1. Two Sum
- BZOJ 4709: [Jsoi2011]柠檬【斜率优化
- 《剑指Offer》java 2.4 算法和数据操作