A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程杰 中级黑马   /  2012-10-23 15:08  /  1617 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Hibernate与Spring整合,Spring里面有个HibernateTemplate这个类。用HibernateTemplate类中的Save保存数据和用Hibernate框架先获得session在用session.save()有什么区别呀?看了半天看不出区别呀{:soso_e127:}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 汪坤洋 于 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一般都是注入方式获取值得,所以几乎没什么依赖性!


评分

参与人数 1技术分 +1 收起 理由
张榆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
汪坤洋 发表于 2012-10-23 19:49
用spring主要是为了减少程序的耦合性,本质没什么区别,而且用spring他在配置文件可以帮你生产session工厂 ...

谢谢,写的很清楚

点评

同学,假如你弄明白了,请把问题改为已解决  发表于 2012-10-28 07:45
回复 使用道具 举报
Spring本身是一个容器,能根据业务需求提供各种各样的对象。用HibernateTemplate类中的Save保存数据和用Hibernate框架先获得session在用session.save()是没有什么区别的,全凭个人爱好。因为在使用HibernateTemplate时继承了HibernateDaoSupport ,而它已封装了sessionFactory工厂类,可提供session对象然后调用sava()方法。这个直接使用Hibernate原生API是一样的,只是Spring帮我们简化了获取session对象这一步逐。这也是为什么很多使用Spring的人可能不懂Hibernate的原生API却也一样能开发的原因。当然这时候我们就得自己处理这期间的异常和管理资源释放了。

评分

参与人数 1技术分 +1 收起 理由
张榆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马