整合说明
1 getCurrentSession() 和 openSession() 创建 session 的区别
getCurrentSession();
如果当前有session会话,则返回当前的session,如果没有则创建一个;不需要手动关闭session会话。
如果事务一旦提交,则会话自动关闭;
如果使用此方法,需要在hibernate.cfg.xml中配置;
<property name=”current_session_context_class”>thread</property>
openSession();
不管有没有Session对象,始终创建新的会话,此方法必须手动关闭session; session.close();
2 Spring_HibernateTeamplate中事务的处理
关于Spring_HibernateTeamplate中的事务处理:
1. hibernate负责维护数据源的情况下
需要在hibernate.cfg.xml中改变hibernate事务处理的方式
<property name=”hibernate.connection.autocommit”>true</property>
2. spring负责维护数据源的情况下
spring默认自动提交事务
3 Spring和Struts2整合注意<action/>的配置
在整合spring和struts2时,
struts.xml配置文件
<action name="*" class="studentAction" method="{1}"> 中
class="" 不需要再写全限定名,写入applicationContext.xml中定义的id=""
<bean id="studentAction" class="com.dawn.action.StudentAction" scope="prototype">
4 显示列表数据的加载
框架整合后,显示列表中存在多对映射关系(一对多,多对一…)的显示时,要注意在主映射文件中设置懒加载lazy="false",否则会出现 no session 异常或导致查询列表字段无法显示