Open Session in View
来源:互联网 发布:led显示屏软件密码 编辑:程序博客网 时间:2024/06/06 14:12
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
说明一下Open Session in View的作用,就是允许在每次的整个request的过程中使用同一个hibernate session,可以在这个request任何时期lazy loading数据。
如果是singleSession=false的话,就不会在每次的整个request的过程中使用同一个hibernate session,而是每个数据访问都会产生各自的seesion,等于没有Open Session in View。
OpenSessionInViewFilter默认是不会对session 进行flush的,并且flush mode 是 never
代码:
protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
session.setFlushMode(FlushMode.NEVER);
return session;
}
看getSession的方式就知道,把flush mode 设为FlushMode.NEVER,这样就算是commit的时候也不会session flush,
如果想在完成request过程中更新数据的话, 那就需要先把flush model设为FlushMode.AUTO,再在更新完数据后flush.
OpenSessionInView默认的FlushMode为
代码:
FlushMode.NEVER
可以采用在写保存更新删除代码的时候手动更改FlushMode
代码:
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
session.setFlushMode(FlushMode.AUTO);
session.save(user);
session.flush();
return null;
}
});
但是这样做太繁琐了,第二种方式是采用spring的事务声明
代码:
<bean id="baseTransaction" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="proxyTargetClass" value="true"/>
<property name="transactionAttributes">
<props>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
代码:
<bean id="userService" parent="baseTransaction">
<property name="target">
<bean class="com.phopesoft.security.service.impl.UserServiceImpl"/>
</property>
</bean>
- Open Session In View
- Open Session in View
- Open Session In View
- Open Session in View
- Open Session In View
- Open Session In View 探讨
- Open Session In View探讨
- Hibernate open session in view
- Open Session In View探讨
- Open Session In View探讨
- Open Session In View探讨
- open session in view 理解
- Open-Session-In-View-Filter
- Hibernate Open-Session-In-View Pattern
- Open Session In View是个双刃剑
- Open Session In View模式的基本常识
- Open Session in View的作用
- hibernate的 open session in view
- ISO C99中的一些扩展(草稿)
- 简易学生管理系统。。。。
- PHP快速删除注释
- 马化腾致信合作伙伴:灰度法则的七个维度
- Enumerate the Triangles&&http://cdn.ac.nbutoj.com/Contest/view/id/14/problem/E.xhtml
- Open Session in View
- linux find查找命令
- 使用Objective-C解压缩ZIP文件教程
- 企业架构-分析的核心思路
- arm芯片中的浮点运算(二)
- 浅析代理模式
- EclipsePHP Studio--PHP的IDE开发软件
- 给ubuntu下虚拟机virtualbox中的ubuntu安装增强功能
- C语言全局变量多文件使用