黑马程序员技术交流社区

标题: Hibernate与Spring整合问题 [打印本页]

作者: 程杰    时间: 2012-10-23 15:08
标题: Hibernate与Spring整合问题
Hibernate与Spring整合,Spring里面有个HibernateTemplate这个类。用HibernateTemplate类中的Save保存数据和用Hibernate框架先获得session在用session.save()有什么区别呀?看了半天看不出区别呀{:soso_e127:}
作者: 汪坤洋    时间: 2012-10-23 19:49
本帖最后由 汪坤洋 于 2012-10-23 19:57 编辑

用spring主要是为了减少程序的耦合性,本质没什么区别,而且用spring他在配置文件可以帮你生产session工厂,简单而且耦合性低
public class DeparmentDaoImp implements DeparmentDao{
private SessionFactory mySessionFactory ;
private Session session;

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public boolean insertDep(Deparment3 deparment) {
  mySessionFactory=HibernateUtil.getMySessionFactory();
  session=mySessionFactory.openSession();
  Transaction tx=session.beginTransaction();

  session.save(deparment);
  tx.commit();
  session.close();
  return true;
}
}这是用hibernate做的
public class MessageImpl extends HibernateDaoSupport implements MessageDao{
public boolean insertMessage(Message message) {
  this.getHibernateTemplate().save(message);
  return true;
}这是spring+hibernate做的
spring一般都是注入方式获取值得,所以几乎没什么依赖性!



作者: 程杰    时间: 2012-10-24 09:15
汪坤洋 发表于 2012-10-23 19:49
用spring主要是为了减少程序的耦合性,本质没什么区别,而且用spring他在配置文件可以帮你生产session工厂 ...

谢谢,写的很清楚
作者: 会飞的鱼    时间: 2012-10-27 00:04
Spring本身是一个容器,能根据业务需求提供各种各样的对象。用HibernateTemplate类中的Save保存数据和用Hibernate框架先获得session在用session.save()是没有什么区别的,全凭个人爱好。因为在使用HibernateTemplate时继承了HibernateDaoSupport ,而它已封装了sessionFactory工厂类,可提供session对象然后调用sava()方法。这个直接使用Hibernate原生API是一样的,只是Spring帮我们简化了获取session对象这一步逐。这也是为什么很多使用Spring的人可能不懂Hibernate的原生API却也一样能开发的原因。当然这时候我们就得自己处理这期间的异常和管理资源释放了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2