Hibernate和Spring的迟误加载和DAO情势[Java编程]
本文“Hibernate和Spring的迟误加载和DAO情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Hibernate和耽误加载
Hibernate对象关系映射供应了两种对象初始化情势:耽误加载和非耽误加载.非耽误加载在加载时获得对象本身以及它关联的全部对象.这大概招致在获得一个实例时,履行成百上千的select语句.当利用双向关联时,这个问题被放大,常常呈现初始化恳求时,整个数据库都被载入.明显查抄每个对象的关系,并手工删除他们会费点事,但终究我们大概会因此丧失利用ORM工具的上风.一个明细的办理方法是利用hibernate供应的耽误载入机制.这种初始化战略在类成员被拜候时只载入它的一个对象的一对多和多对多关系.对开辟人员来说,这种方法是透明的,并且只有最少数目的恳求发生,这样就得到了最佳的性能.这种技术的一个缺陷是耽误载入要求当对象还在利用中时,Hibernate的Session必须保持翻开状况.当尝试通过DAO情势抽象长期层时,这会惹起一个重要问题.为了充分地抽象长期层,全部的数据库逻辑,包含翻开、关闭Session都不能在利用层呈现.最常见的是,这些逻辑躲藏在DAO的实现类中.快速和差一些的筹划是:避免采取DAO情势,在利用层中包含数据衔接的逻辑.这在小利用中是可行的,但在大系统中,这会是一个计划缺陷,它侵害了利用的扩大性.
在Web层利用耽误加载
幸运的是,Spring框架已经供应了一个DAO情势结合Hibernate耽误加载的Web筹划.关于任何不熟习Spring框架结合Hibernate人来说,我在这里不会深化细节,但是我但愿你去阅读“结合Spring框架的Hibernate数据库拜候”章节.这个案例是一个Web利用,Spring供应了OpenSessionInViewerFilter和OpenSessionInViewInterceptor.利用它们中的任一个都能得到一样的功效.这二者唯一差别的是interceptor在Spring容器中运行,并且在web利用的上下文中配置;fitler在Spring前运行,并且在web.xml中配置.不管利用哪一个,他们城市在恳求绑定到Session的当前线程期间翻开Hibernate Session.一旦绑定到线程,翻开的Hibernate Session能被DAO的实现类透明地利用.Session会持续翻开答应延加载拜候数据库.一旦View逻辑完成,hibernate session会被关闭,无论是在Filter的doFilter办法中还是在Interceptor的postHandle办法中.下面是一个配置实例:
Interceptor配置
<beans>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptor"/>
</list>
</property>
<property name="mappings">
...
</bean>
...
<bean name="openSessionInViewInterceptor"
class="org.springframework.orm.hibernate.support.OpenSessionInViewInterceptor">
<property name="sessionFactory"><ref bean="sessionFactory"/></property>
</bean>
</beans>
Filter配置
<web-app>
...
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate.support.OpenSessionInViewFilter
</filter-class>
</filter>
...
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.spring</url-pattern>
</filter-mapping>
...
</web-app>
以上是“Hibernate和Spring的迟误加载和DAO情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |