深入浅出hibernate摘录

以下摘自深入浅出hibernate:

DAO模式中,数据库访问层实现被隐藏到Data Accessor中,前面说过,DAO模式实际上是两个模式的组合,即Data Accessor和domain Object模式。
何谓Data Accessor?即将数据访问的实现机制加以封装,于数据的使用代码想分离,从外部来看,Data Accessor提供了黑盒式的数据存取接口。

Domain Object则提供了对所面向领域内对象的封装。
从某种意义上,我们可以这么理解:
Data Accessor Object(DAO)=Data + Accessor + domain Object

开闭原则:对扩展开放,对修改封闭


数据库连接不仅仅是在应用服务器与数据库服务器之间建立一个Socket Connection(对于Type 4的jdbc Driver而言),连接建立之后,应用服务器和数据库服务器之间还需要交换若干次数据(验证用户密码,权限等),然后,数据库开始初始化连接会话句柄,记录联机日志,为此连接分配相应的处理进程和系统资源。系统如此忙碌,如果我们只是简单地扔过去两个SQL语句,然后就将此连接抛弃实在可惜,而数据库连接池技术正是为了解决这个问题。

一个完备的数据库连接池实现应该具备更加全面的管理机制,如对连接池更加高效的管理,相关参数的可配置化实现,池中连接的异常状态检测和处理等(如某些数据库会对当前连接进行检测,如果发现有长时间未用连接则主动将其断开,如果出现这样的情况将导致后继数据库访问异常。)

hibernate 3 中对包名进行了修改,net.sf.hibernate=>org.hibernate

Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();

 

configuration 实例会根据当前的数据库配置信息,构造SessionFactory实例并返回。SessionFactory 一旦构造完毕,即被赋予特定的配置信息。


也就是说,之后config的任何变更将不会 影响到已经创建的SessionFactory实例。如果需要使用基于改动后的config实例的SessionFactory,需要从config重新构建一个SessionFactory实例。同样,如果应用中需要访问多个数据库,那么针对每个数据库,应分别为其创建对应的SessionFactory实例。


SessionFactory中保存了对应当前数据库 配置的所有映射关系,同时也负责维护当前的二级缓存和StatementPool。由此可见,SessionFactory的创建过程必然非常复杂,代价高昂,而这也意味着,我们应该在系统设计中充分考虑到SessionFactory的重用策略。由于SessionFactory采取了线程安全的设计,可由多个线程并发调用,大多数情况下,一个应用中针对一个数据库共享一个SessionFactory实例即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值