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"相对应!


版权声明:本文为Holmes_Conan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。