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"相對應!

發佈了58 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章