天天看點

【hibernate架構】對象的三種狀态Transient-Persistent-Detached

三種狀态分别是

Transient(遊離狀态),Persistent(持久化狀态),Detached(脫管狀态)。

Teacher t=new Teacher();

t.setName("t12");//遊離狀态

t.setTitle("中級");//遊離狀态

t.setBrithday(new Date());//遊離狀态

t.setZhicheng(ZhiCheng.A);//遊離狀态

SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();

Session session=sessionFactory.getCurrentSession();

session.beginTransaction();

session.save(t);//持久化狀态

session.getTransaction().commit();

System.out.ptintln(t.getId);//脫管狀态

三種狀态的區分關鍵在于:

a)有沒有ID(沒有ID一定是Transient狀态)

b)ID在資料庫中有沒有

c)在記憶體中有沒有(session緩存)

Transient(遊離狀态):記憶體中一個對象,沒ID,緩存裡沒有,資料庫中也沒有。

Persistent(持久化狀态):記憶體中有,緩存中有,資料庫中有(ID)。

Detached(脫管狀态):記憶體有,緩存沒有,資料庫有,ID。

什麼是緩存?

緩存可以提高通路效率,原來的東西放在硬碟上,用東西每次都從硬碟去取,效率很低。這時候可以在記憶體中保留一份,要用的時候去記憶體裡去取,是以緩存就是記憶體中的一塊區域,裡面放着一系列的我們想要提高讀取效率的對象或者引用。

轉載請注明出處:http://blog.csdn.net/acmman/

繼續閱讀