SSH整合中通过spring3.1.1获取SessionFactory和Session的问题,求解答

bettermancxx 2012-05-03 10:53:54
最近在做SSH的时候,发现hibernate4已经取消了HibernateTemplate,那么通过spring3.1获取Session的时候是需要获取到SessionFactory,然后再通过getcurrentsession()来获取session吗?获取的session还需要开启事务和关闭吗,感觉好麻烦如果这样做


还是说可以直接使用sessionFactory.getCurrentSession().save(user),而不必再new一个session出来,spring会自动帮助关闭session吗?

...全文
289 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bettermancxx 2012-05-04
  • 打赏
  • 举报
回复
另springSessionContext是怎么回事,是不是springSessionContext.currentSession也可以拿到session,我实验的时候拿到的一直是空值

<bean id="springSessionContext" class="org.springframework.orm.hibernate4.SpringSessionContext">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
liuyyuns 2012-05-04
  • 打赏
  • 举报
回复
hibernate你最好自己关闭session
和spring是没关系的
蛋疼的IT 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

需要配置并启动事务,在spring配置文件中加入事务配置,可能是这样:
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
在类上……
[/Quote]
还可以
new_bird_0001 2012-05-03
  • 打赏
  • 举报
回复
需要配置并启动事务,在spring配置文件中加入事务配置,可能是这样:
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
在类上加入这个注解:
@Transactional
public class UserDAOImpl implements UserDAO{
.....
这样就可以直接更新数据了:
sessionFactory.getCurrentSession().save(user);
spring将负责对session和事务的管理,用户不需要管理session和事务。
bettermancxx 2012-05-03
  • 打赏
  • 举报
回复
目前代码是这样写的,新手,
public class UserDAOImpl implements UserDAO{

private SessionFactory sessionFactory;

@Override
public boolean add(User user)throws Exception{
sessionFactory.getCurrentSession().save(user);
return true;
}

@Override
public boolean exists(String name) throws Exception{

long count = (Long)sessionFactory.getCurrentSession().createQuery("select count(*) from User u where u.name = :name")
.setString("name", name)
.uniqueResult();
if(count > 0) return true;
return false;
}

public SessionFactory getSessionFactory() {
return sessionFactory;
}

@Resource(name="sessionFactory")
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

}

67,513

社区成员

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

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