欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
翻譯的Hibernate的Session的javadoc
翻譯的Hibernate的Session的javadoc  
Hibernate的透明持久化用起來(lái)非常舒服,有時(shí)甚至忘記了數據庫的存在。我身邊的朋友經(jīng)常會(huì )分不清save、saveOrUpdate、update的區別,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且關(guān)于實(shí)體對象的生命周期也有很多概念不清,分不清transient、persistent、detached的區別,只是知道PO、VO這樣的通俗叫法。其實(shí)這些概念都很簡(jiǎn)單,Hibernate的javadoc寫(xiě)的都很清楚,只需看看就能明白。所以我花了些時(shí)間將Hibernate 3.1.2中session的javadoc部分翻譯了一下,旨在讓那些因為Hibernate的“透明”而忘記了它基本概念的人們停下來(lái)再看看這些概念



org.hibernate
Interface Session

All Superinterfaces:
Serializable
All Known Subinterfaces:
EventSource, Session
All Known Implementing Classes:
SessionImpl

public interface Session
extends Serializable

Java應用程序與Hibernate之間的主要運行時(shí)接口。它是抽象了持久化服務(wù)概念的核心抽象API類(lèi)。

Session的生命周期綁定在一個(gè)物理的事務(wù)(tansaction)上面。(長(cháng)的事務(wù)可能跨越多個(gè)數據庫事物。)

Session的主要功能是提供對映射的實(shí)體類(lèi)實(shí)例的創(chuàng )建,讀取和刪除操作。實(shí)例可能以下面三種狀態(tài)存在:

自由狀態(tài)(transient): 不曾進(jìn)行持久化,未與任何Session相關(guān)聯(lián)
持久化狀態(tài)(persistent): 僅與一個(gè)Session相關(guān)聯(lián)
游離狀態(tài)(detached): 已經(jīng)進(jìn)行過(guò)持久化,但當前未與任何Session相關(guān)聯(lián)

游離狀態(tài)的實(shí)例可以通過(guò)調用save()、persist()或者saveOrUpdate()方法進(jìn)行持久化。持久化實(shí)例可以通過(guò)調用 delete()變成游離狀態(tài)。通過(guò)get()load()方法得到的實(shí)例都是持久化狀態(tài)的。游離狀態(tài)的實(shí)例可以通過(guò)調用 update()、0saveOrUpdate()、lock()或者replicate()進(jìn)行持久化。游離或者自由狀態(tài)下的實(shí)例可以通過(guò)調用merge()方法成為一個(gè)新的持久化實(shí)例。

save()persist()將會(huì )引發(fā)SQL的INSERT,delete()會(huì )引發(fā)SQLDELETE,而update()merge()會(huì )引發(fā)SQLUPDATE。對持久化(persistent)實(shí)例的修改在刷新提交的時(shí)候會(huì )被檢測到,它也會(huì )引起SQLUPDATE。saveOrUpdate()或者replicate()會(huì )引發(fā)SQLINSERT或者UPDATE。

其具體實(shí)現并不一定是線(xiàn)程安全的。每個(gè)線(xiàn)程/事務(wù)應該從一個(gè)SessionFactory獲取自己的session實(shí)例。

如果其持久化對象類(lèi)是可序列化的,則Session實(shí)例也是可序列化的。

一個(gè)典型的事務(wù)應該使用下面的形式:

 Session sess = factory.openSession();Transaction tx;try {tx = sess.beginTransaction();//do some work...tx.commit();}catch (Exception e) {if (tx!=null) tx.rollback();throw e;}finally {sess.close();}

如果Session拋出了異常, 事務(wù)必須回滾而session會(huì )被廢棄。在異常發(fā)生后Session的內部狀態(tài)可能會(huì )與數據庫失去同步。

Author:
Gavin King
See Also:
SessionFactory

Method Summary
 Transaction beginTransaction()
          開(kāi)始一個(gè)工作單元并且返回相關(guān)聯(lián)的事務(wù)(Transaction)對象。
 void cancelQuery()
          終止執行當前查詢(xún)。
 void clear()
          完整的清除這個(gè)session。
 Connection close()
          停止這個(gè)Session,通過(guò)中斷JDBC連接并且清空(cleaning up)它。
 Connection connection()
          獲取這個(gè)Session的JDBC連接。

如果這個(gè)session使用了積極的collection釋放策略(如CMT-容器控制事務(wù)的環(huán)境下),關(guān)閉這個(gè)調用的連接的職責應該由當前應用程序負責。
 boolean contains(Object object)
          檢查這個(gè)對象實(shí)例是否與當前的Session關(guān)聯(lián)(即是否為Persistent狀態(tài))。
 Criteria createCriteria(Class persistentClass)
          為給定的實(shí)體類(lèi)或它的超類(lèi)創(chuàng )建一個(gè)新的Criteria實(shí)例。
 Criteria createCriteria(Class persistentClass, String alias)
          根據給定的實(shí)體類(lèi)或者它的超類(lèi)創(chuàng )建一個(gè)新的Criteria實(shí)例,并賦予它(實(shí)體類(lèi))一個(gè)別名。
 Criteria createCriteria(String entityName)
          根據給定的實(shí)體的名稱(chēng)(name),創(chuàng )建一個(gè)新的Criteria實(shí)例。
 Criteria createCriteria(String entityName, String alias)
          根據給定的實(shí)體的名稱(chēng)(name),創(chuàng )建一個(gè)新的Criteria實(shí)例,并賦予它(實(shí)體類(lèi))一個(gè)別名
 Query createFilter(Object collection, String queryString)
          根據給定的collection和過(guò)濾字符串(查詢(xún)條件)創(chuàng )建一個(gè)新的Query實(shí)例。
 Query createQuery(String queryString)
          根據給定的HQL查詢(xún)條件創(chuàng )建一個(gè)新的Query實(shí)例。
 SQLQuery createSQLQuery(String queryString)
          根據給定的SQL查詢(xún)條件創(chuàng )建一個(gè)新的SQLQuery實(shí)例。
 void delete(Object object)
          從數據庫中移除持久化(persistent)對象的實(shí)例。
 void delete(String entityName, Object object)
          從數據庫中移除持久化(persistent)對象的實(shí)例。
 void disableFilter(String filterName)
          禁用當前session的名稱(chēng)過(guò)濾器。
 Connection disconnect()
          斷開(kāi)Session與當前的JDBC連接。
 Filter enableFilter(String filterName)
          打開(kāi)當前session的名稱(chēng)過(guò)濾器。
 void evict(Object object)
          將當前對象實(shí)例從session緩存中清除。
 void flush()
          強制提交刷新(flush)Session。
 Object get(Class clazz, Serializable id)
          根據給定標識和實(shí)體類(lèi)返回持久化對象的實(shí)例,如果沒(méi)有符合條件的持久化對象實(shí)例則返回null。
 Object get(Class clazz, Serializable id, LockMode lockMode)
          根據給定標識和實(shí)體類(lèi)返回持久化對象的實(shí)例,如果沒(méi)有符合條件的持久化對象實(shí)例則返回null。
 Object get(String entityName, Serializable id)
          返回與給定的實(shí)體命名和標識匹配的持久化實(shí)例,如果沒(méi)有對應的持久化實(shí)例則返回null。
 Object get(String entityName, Serializable id, LockMode lockMode)
          返回與給定的實(shí)體類(lèi)和標識所匹配的持久化實(shí)例,如果沒(méi)有對應的持久化實(shí)例則返回null。
 CacheMode getCacheMode()
          得到當前的緩存模式。
 LockMode getCurrentLockMode(Object object)
          檢測給定對象當前的鎖定級別。
 Filter getEnabledFilter(String filterName)
          根據名稱(chēng)獲取一個(gè)當前允許的過(guò)濾器(filter)。
 EntityMode getEntityMode()
          獲取這個(gè)session有效的實(shí)體模式。
 String getEntityName(Object object)
          返回一個(gè)持久化對象的實(shí)體名稱(chēng)。
 FlushMode getFlushMode()
          獲得當前的刷新提交(flush)模式。
 Serializable getIdentifier(Object object)
          獲取給定的實(shí)體對象實(shí)例在Session的緩存中的標識,如果該實(shí)例是自由狀態(tài)(Transient)的或者與其它Session關(guān)聯(lián)則拋出一個(gè)異常。
 Query getNamedQuery(String queryName)
          從映射文件中根據給定的查詢(xún)的名稱(chēng)字符串獲取一個(gè)Query(查詢(xún))實(shí)例。
 Session getSession(EntityMode entityMode)
          根據給定的實(shí)體模式(Entity Mode)開(kāi)始一個(gè)新的有效的Session。
 SessionFactory getSessionFactory()
          獲取創(chuàng )建這個(gè)session的SessionFactory實(shí)例。
 SessionStatistics getStatistics()
          獲取這個(gè)session的統計信息。
 Transaction getTransaction()
          獲取與這個(gè)session關(guān)聯(lián)的Transaction(事務(wù))實(shí)例。 instance associated with this session.
 boolean isConnected()
          檢查當前Session是否處于連接狀態(tài)。
 boolean isDirty()
          當前Session是否包含需要與數據庫同步的(數據狀態(tài))變化 ?如果我們刷新提交(flush)這個(gè)session是否會(huì )有SQL執行?
 boolean isOpen()
          檢查當前Session是否仍然打開(kāi)。
 Object load(Class theClass, Serializable id)
          在符合條件的實(shí)例存在的情況下,根據給定的實(shí)體類(lèi)和標識返回持久化狀態(tài)的實(shí)例。
 Object load(Class theClass, Serializable id, LockMode lockMode)
          在符合條件的實(shí)例存在的情況下,根據給定的實(shí)體類(lèi)、標識及指定的鎖定等級返回持久化狀態(tài)的實(shí)例。
 void load(Object object, Serializable id)
          將與給定的標示對應的持久化狀態(tài)(值)復制到給定的自由狀態(tài)(trasient)實(shí)例上。
 Object load(String entityName, Serializable id)
          在符合條件的實(shí)例存在的情況下,根據給定的實(shí)體類(lèi)和標識返回持久化狀態(tài)的實(shí)例。
 Object load(String entityName, Serializable id, LockMode lockMode)
          在符合條件的實(shí)例存在的情況下,根據給定的實(shí)體類(lèi)、標識及指定的鎖定等級返回持久化狀態(tài)的實(shí)例。
 void lock(Object object, LockMode lockMode)
          從給定的對象上獲取指定的鎖定級別。
 void lock(String entityName, Object object, LockMode lockMode)
          從給定的對象上獲取指定的鎖定級別。
 Object merge(Object object)
          將給定的對象的狀態(tài)復制到具有相同標識的持久化對象上。
 Object merge(String entityName, Object object)
          將給定的對象的狀態(tài)復制到具有相同標識的持久化對象上。
 void persist(Object object)
          將一個(gè)自由狀態(tài)(transient)的實(shí)例持久化。
 void persist(String entityName, Object object)
          將一個(gè)自由狀態(tài)(transient)的實(shí)例持久化。
 void reconnect()
          不推薦的。 手工的重新連接只應用于應用程序提供連接的情況,在這種情況下或許應該使用reconnect(java.sql.Connection)。
 void reconnect(Connection connection)
          重新連接到給定的JDBC連接。
 void refresh(Object object)
          從數據庫中重新讀取給定實(shí)例的狀態(tài)。
 void refresh(Object object, LockMode lockMode)
          根據指定的鎖定模式(LockMode),從數據庫中重新讀取給定實(shí)例的狀態(tài)。
 void replicate(Object object, ReplicationMode replicationMode)
          使用當前的標識值持久化給定的游離狀態(tài)(Transient)的實(shí)體。
 void replicate(String entityName, Object object, ReplicationMode replicationMode)
          使用當前的標識值持久化給定的游離狀態(tài)(Transient)的實(shí)體。
 Serializable save(Object object)
          首先為給定的自由狀態(tài)(Transient)的對象(根據配置)生成一個(gè)標識并賦值,然后將其持久化。
 Serializable save(String entityName, Object object)
          首先為給定的自由狀態(tài)(Transient)的對象(根據配置)生成一個(gè)標識并賦值,然后將其持久化。
 void saveOrUpdate(Object object)
          根據給定的實(shí)例的標識屬性的值(注:可以指定unsaved-value。一般默認null。)來(lái)決定執行 save()update()操作。
 void saveOrUpdate(String entityName, Object object)
          根據給定的實(shí)例的標識屬性的值(注:可以指定unsaved-value。一般默認null。)來(lái)決定執行 save()update()操作。
 void setCacheMode(CacheMode cacheMode)
          設置刷新提交模式。
 void setFlushMode(FlushMode flushMode)
          設置刷新提交模式。
 void setReadOnly(Object entity, boolean readOnly)
          將一個(gè)未經(jīng)更改的持久化對象設置為只讀模式,或者將一個(gè)只讀對象標記為可以修改的模式。
 void update(Object object)
          根據給定的detached(游離狀態(tài))對象實(shí)例的標識更新對應的持久化實(shí)例。
 void update(String entityName, Object object)
          根據給定的detached(游離狀態(tài))對象實(shí)例的標識更新對應的持久化實(shí)例。
 來(lái)自:  Tin

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Hibernate三種狀態(tài)的區分,以及save,update,saveOrUpd
第?11?章?與對象共事
hibernate實(shí)體對象的三種狀態(tài):自由狀態(tài),持久狀態(tài),游離狀態(tài).
Spring整合Hibernate中對HibernateTemplate的思考
java學(xué)習筆記
java – Hibernate將對象保存到多個(gè)會(huì )話(huà)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久