BSSQC数据库连接和事务管理专题.docx
《BSSQC数据库连接和事务管理专题.docx》由会员分享,可在线阅读,更多相关《BSSQC数据库连接和事务管理专题.docx(9页珍藏版)》请在第一文库网上搜索。
1、BSSQC数据库连接和事务管理专题VI.0.1修改日期原因修改人2007-09-30根据ZhaOXin的意见,修改了Hibernate的session连接管理刘世伟2007-11-8根据调优组当前的工作,补充了一些内容刘世伟几个名词解释:1、 数据库连接池:众所周知,建立数据库连接是一个昂贵的操作,每次都得花费约0.05s1s的时间,消耗一定的内存资源(OraCIe91的一个空闲连接约需25MB内存,非空闲连接约需几十MB左右内存),而且一旦到达临界点,系统会陷入资源管理的恶性循环:越来越慢。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接备用,减少使
2、用时才创建、销毁的消耗。当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。使用连接池后,数据库服务器减少了它并不擅长的连接管理工作,通过池连接的快速复用,能够为客户端提供更大的并发量,内存消耗也在可控范围内波动。我们能够通过设定连接池最大连接数来防止系统无尽的与数据库连接,操纵数据库的压力。我们也能够通过连接池的管理机制监控数据库连接的数量、使用情况,为系统开发、测试及性能调优提供根据。2、 真实连接:客户端程序直接与数据库建立的COnneCtion,使用完毕需要及时、安全的关闭,否则会导致数据库内存资源泄漏、服务器宕机3、 代理连接:客户端程序从连接池获取的COnne
3、Ction,它实际上是封装了真实连接,提供与真实连接相同的功能,使用完毕也需要及时、安全的关闭,否则连接池中的连接得不到释放,会导致连接池中可用的空闲连接越来越少。当然,由于存在连接池的操纵,数据库不可能因此而宕机。以下方法茨取的都是代理连接:以下方法获取的部是我卖的连接;交Si请求一C1ientHibcmatc.gc1ScwioM):2.JdbCTCnIPImegC1DaUSn():,连接池Connee1ionPoO卜应用程序SSP、Serv1et.EJB、JavaApP等)在取连接池连接Hibemate.geSesion(.conncction();2.JdbCTemP1ate.geDat
4、aSourcce1ega怆0:口实连协客户端通过连接池使用数据库连接,创建和关闭连接其实对从连接池中获取和归还已经创建好的数据库连接。特殊情况下,客户端也需要通过连接池,使用宾实的数据库连接.,归还连接池连输-连接池配艮的参数:MaxActives最大连接数Max1de1:最大空闲连接数Min1dch鼓小空闲连接数InitiaISizc:初始化连接数MaxWait:最大等待时间Va1idationQuery:i询前殴证连接testOnBorrow获取前测试连接由连接池管理(创建、更新、关闭)数据库的真实连接,一般提供初始化、池管理、池销毁、获取、关闭连接功能一、BSS数据库连接管理现状:BSS
5、系统中对数据库连接的管理,是统一通过数据源(DataSource)管理的,存在连接池与单连接两种方式的数据源(详情参考mode1xxx.jar中的xxxDatabase.xm1文件)1、单连接数据源,命名方式为xxxDataSourceNoPoo1”,BSS使用了Spring框架的org.springframework,jdbc.datasource.DriverManagerDataSource,程序获取的是真实的数据库连接。二、BSS系统中对数据源的使用1、Hibernate的SeSSionFaCtOry,使用的是连接池数据源,在配置文件中通常命名为uXxxSessionFactory,而
6、且Hibernate本身包含一个简单的连接池hibernate,connection,但性能与功能不如apache的。2、SPring的JdbCTemP1ate,根据其使用数据源是否为连接池,命名方式也不一致,配置文件中对使用连接池数据源的命名为“xxxJDBC”,使用单连接数据源的命名为uxxxJDBCNoPoo,三、应用程序中对连接的使用BSS程序中使用Hibernate的session与JdbcTemp1ate提供的通用方法通常是够用的,但某些场景下如执行orac1e特性的SQ1语句或者存储过程,需要获取真实数据库连接,现在要紧使用下列几种方式:1、Hibernate中,通过getSes
7、sion().connection。,如今获取的是连接是根据其数据源决定的,假如通过连接池中获取,则是代理连接,否则是真实数据库连接,但注意,不管如何都不能用conn.C1oSe()语句显示关闭的;这时候的conn事实上是被session管理了,Hibernate会在Session的事务提交或者回滚的时候,自动把连接放回池中,假如我们主动关了,会抛特殊。2、 JdbcTemp1ate中,通过jdbc.getDataSource().getConnection(),如今获取的连接是根据其数据源决定的,假如jdbc.getDataSource()返回的是连接池数据源,则连接是连接池的连接代理(重载
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BSSQC 数据库连接 事务管理 专题
![提示](https://www.001doc.com/images/bang_tan.gif)