Hibernate框架利用sessionFactory保存数据的两种方式

1. 一般来说,sessionFactory实例的创建需要hibernate.cfg.xml配置文件,但是我们已经把它合并到applicationContext.xml配置文件中了,刚开始我也试了很久,都提示没有创建实例,后来,终于被我得出了结论:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

SessionFactory sf = (SessionFactory)ctx.getBean("sessionFactory");

于是我就利用sf.openSession().save(user);

但是保存以后数据库没有数据,又琢磨了很长时间,原来是没有将save方法放在事务中,这一下子明白了:

Session session = sf.openSession();

Transaction tx = session.beginTransaction();

session.save(user);

tx.commit();

session.close();

数据库里面终于有信息了!

2. 我们可以不在Java类里面创建SessionFactory实例,因为ApplicationContext.xml已经创建好了,直接使用就可以了,我们只要把这个类注入到sessionFactory就ok了!注入的好处就是不用自己创建对象,直接使用就可以了,但是需要在Java类里面具有get()和set()方法,例如:

<bean id="HelloWorld" class="action.HelloWorld">

          <property name = "sf">

                           <ref local = "sessionFactory"/>

           </property>

</bean>

HelloWorld.java里面必须有这两条语句:

private SessionFactory sf;

public SessionFactory getSf(){

return sf;

}

public void setSf(SessionFactory sf){

this.sf=sf;

}

而且这样写的好处是把struts.xml与applicationContext.xml联系起来了:

struts.xml的class=“HelloWorld”和applicationContext.xml的id="HelloWorld"相对应!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值