您的位置:首页 > 数据库

Hibernate的延迟加载机制

2009-06-03 22:29 274 查看
 

Hibernate和延迟加载

Hibernate对象关系映射提供了两种对象初始化模式:延迟加载和非延迟加载。非延迟加载在加载时获取对象本身以及它关联的所有对象。这可能导致在获取一个实例时,执行成百上千的select语句。当使用双向关联时,这个问题被放大,常常出现初始化请求时,整个数据库都被载入。显然检查每个对象的关系,并手工删除他们会费点事,但最终我们可能会因此丢失使用ORM工具的优势。一个明细的解决方式是使用hibernate提供的延迟载入机制。这种初始化策略在类成员被访问时只载入它的一个对象的一对多和多对多关系。对开发人员来说,这种方式是透明的,并且只有最少数量的请求发生,这样就获得了最佳的性能。这种技术的一个缺点是延迟载入要求当对象还在使用中时,Hibernate的Session必须保持打开状态。当尝试通过DAO模式抽象持久层时,这会引起一个重要问题。为了充分地抽象持久层,所有的数据库逻辑,包括打开、关闭Session都不能在应用层出现。最常见的是,这些逻辑隐藏在DAO的实现类中。快速和差一些的方案是:避免采用DAO模式,在应用层中包含数据连接的逻辑。这在小应用中是可行的,但在大系统中,这会是一个设计缺陷,它损害了应用的扩展性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息