高手帮我看看如何在延迟加载中使用OpenSessionInViewInterceptor

onekey 2007-09-19 10:46:55
目前的hibernate中是这样配置:
...
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- Generic DAO - can be used when doing standard CRUD -->
<bean id="baseDAO" class="com.base.dao.BaseDAOHibernate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

....

<!-- contracthead -->
<bean id="contractheadmanager" parent="txProxyTemplate">
<property name="target">
<bean
class="com.manager.rentprocess.contract.service.impl.ContractheadImpl">
<property name="dao" ref="baseDAO"/>
</bean>
</property>
</bean>

BaseDAOHibernate是DAO模式的一个代理类,各个DAO继承自这个代理类。
我现在怎么加上OpenSessionInViewInterceptor才能实现延时加载?
...全文
418 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lysamper 2008-05-04
  • 打赏
  • 举报
回复
关闭OpenSessionInViewFilter后,一般局域网的系统应该没有多大影响,主要是并发时候可能就比较吃力拉??

有没有谁这方面的性能分析报告呢?
chenyumao 2007-09-27
  • 打赏
  • 举报
回复
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
chenyumao 2007-09-27
  • 打赏
  • 举报
回复
opensessioninview.用户多的时候当然占资源了
不使用opensessioninview:方法有二:其一:lazy="false"。其二在每个地方
IF(HIBERNATEuTIL。ISLAZY()){
HIBERNTATEUTIL。INLAZY(O);
}
函数名不很对。这两个都可以解决。

或者
opensessioninview.在VIEW层运行XX.getPAGElIST();SESSION一直开,就没有延时加载问题了。具体的说就是在JSP页面上运行XX.getPAGElIST();
zjf405 2007-09-26
  • 打赏
  • 举报
回复
不用open session in view,那就将检索策略换成立即加载(即lazy="false")
sunyujia 2007-09-26
  • 打赏
  • 举报
回复
不用open session in view,那就将检索策略换成立即加载(即lazy="false")
除此之外呢? 要延迟加载 比open session in view设计的好的方法
sunyujia 2007-09-25
  • 打赏
  • 举报
回复
非常想知道不用OpenSessionInViewFilter的解决办法,或设计理念.
bushuang 2007-09-21
  • 打赏
  • 举报
回复
mark
onekey 2007-09-21
  • 打赏
  • 举报
回复
大家来顶分啊
zjf405 2007-09-21
  • 打赏
  • 举报
回复
把你的配置改了一下,你参考一下吧,其实你还可以用OpenSessionInViewFilter来实现延迟加载的,不过open session in view这种东西还是少用为好,特别是对于流量大的网站。给你个连接http://www.javaeye.com/forums/board/Java,在里面搜索OpenSessionInView有很多相关讨论

<!-- contracthead -->
<bean name="openSessionInViewInterceptor"
class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<bean id="contractheadmanager" parent="txProxyTemplate">
<property name="target">
<bean
class="com.manager.rentprocess.contract.service.impl.ContractheadImpl">
<property name="dao" ref="baseDAO"/>
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptor"/>
</list>
</property>
</bean>
</property>
</bean>
onekey 2007-09-19
  • 打赏
  • 举报
回复
chenyumao(毛毛):
SESSION一直开不行的,用户多的时候太占资源了,
看网上有用事务拦截的,就是不知道怎么用?
zjf405 2007-09-19
  • 打赏
  • 举报
回复
先占个位置
chenyumao 2007-09-19
  • 打赏
  • 举报
回复
后台到前台为XX这个对象,前台JSP运行XX。GETPAGELIST方法
chenyumao 2007-09-19
  • 打赏
  • 举报
回复
opensessioninview.在VIEW层运行XX.getPAGElIST();SESSION一直开,就没有延时加载问题了。具体的说就是在JSP页面上运行XX.getPAGElIST();

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧