轉載至:http://www.chinaovo.net:8080/showinfo/128/172.html
Hibernate的透明持久化用起來非常舒服,有時甚至忘記了數據庫的存在。我身邊的朋友經常會分不清save、saveOrUpdate、 update的區別,lock、merge、replicate、refresh、evict甚至不知道是幹什麼用的。而且關於實體對象的生命週期也有很 多概念不清,分不清transient、persistent、detached的區別,只是知道PO、VO這樣的通俗叫法。其實這些概念都很簡 單,Hibernate的javadoc寫的都很清楚,只需看看就能明白。所以我花了些時間將Hibernate 3.1.2中session的javadoc部分翻譯了一下,旨在讓那些因爲Hibernate的“透明”而忘記了它基本概念的人們停下來再看看這些概念
Method Summary | |
Transaction
|
beginTransaction
()
開始一個工作單元並且返回相關聯的事務(Transaction) 對象。 |
void
|
cancelQuery
()
終止執行當前查詢。 |
void
|
clear
()
完整的清除這個session。 |
Connection
|
close
()
停止這個Session ,通過中斷JDBC連接並且清空(cleaning up)它。 |
Connection
|
connection
()
獲取這個Session的JDBC連接。 如果這個session使用了積極的collection釋放策略(如CMT-容器控制事務的環境下),關閉這個調用的連接的職責應該由當前應用程序負責。 |
boolean
|
contains
(Object
object)
檢查這個對象實例是否與當前的Session 關聯(即是否爲Persistent狀態)。 |
Criteria
|
createCriteria
(Class
persistentClass)
爲給定的實體類或它的超類創建一個新的Criteria 實例。 |
Criteria
|
createCriteria
(Class
persistentClass, String
alias)
根據給定的實體類或者它的超類創建一個新的Criteria 實例,並賦予它(實體類)一個別名。 |
Criteria
|
createCriteria
(String
entityName)
根據給定的實體的名稱(name),創建一個新的Criteria 實例。 |
Criteria
|
createCriteria
(String
entityName, String
alias)
根據給定的實體的名稱(name),創建一個新的Criteria 實例,並賦予它(實體類)一個別名 |
Query
|
createFilter
(Object
collection, String
queryString)
根據給定的collection和過濾字符串(查詢條件)創建一個新的Query 實例。 |
Query
|
createQuery
(String
queryString)
根據給定的HQL查詢條件創建一個新的Query 實例。 |
SQLQuery
|
createSQLQuery
(String
queryString)
根據給定的SQL查詢條件創建一個新的SQLQuery 實例。 |
void
|
delete
(Object
object)
從數據庫中移除持久化(persistent)對象的實例。 |
void
|
delete
(String
entityName, Object
object)
從數據庫中移除持久化(persistent)對象的實例。 |
void
|
disableFilter
(String
filterName)
禁用當前session的名稱過濾器。 |
Connection
|
disconnect
()
斷開Session 與當前的JDBC連接。 |
Filter
|
enableFilter
(String
filterName)
打開當前session的名稱過濾器。 |
void
|
evict
(Object
object)
將當前對象實例從session緩存中清除。 |
void
|
flush
()
強制提交刷新(flush)Session 。 |
Object
|
get
(Class
clazz, Serializable
id)
根據給定標識和實體類返回持久化對象的實例,如果沒有符合條件的持久化對象實例則返回null。 |
Object
|
get
(Class
clazz, Serializable
id, LockMode
lockMode)
根據給定標識和實體類返回持久化對象的實例,如果沒有符合條件的持久化對象實例則返回null。 |
Object
|
get
(String
entityName, Serializable
id)
返回與給定的實體命名和標識匹配的持久化實例,如果沒有對應的持久化實例則返回null。 |
Object
|
get
(String
entityName, Serializable
id, LockMode
lockMode)
返回與給定的實體類和標識所匹配的持久化實例,如果沒有對應的持久化實例則返回null。 |
CacheMode
|
getCacheMode
()
得到當前的緩存模式。 |
LockMode
|
getCurrentLockMode
(Object
object)
檢測給定對象當前的鎖定級別。 |
Filter
|
getEnabledFilter
(String
filterName)
根據名稱獲取一個當前允許的過濾器(filter)。 |
EntityMode
|
getEntityMode
()
獲取這個session有效的實體模式。 |
String
|
getEntityName
(Object
object)
返回一個持久化對象的實體名稱。 |
FlushMode
|
getFlushMode
()
獲得當前的刷新提交(flush)模式。 |
Serializable
|
getIdentifier
(Object
object)
獲取給定的實體對象實例在Session 的緩存中的標識,如果該實例是自由狀態(Transient)的或者與其它Session 關聯則拋出一個異常。 |
Query
|
getNamedQuery
(String
queryName)
從映射文件中根據給定的查詢的名稱字符串獲取一個Query(查詢) 實例。 |
Session
|
getSession
(EntityMode
entityMode)
根據給定的實體模式(Entity Mode)開始一個新的有效的Session。 |
SessionFactory
|
getSessionFactory
()
獲取創建這個session的SessionFactory 實例。 |
SessionStatistics
|
getStatistics
()
獲取這個session的統計信息。 |
Transaction
|
getTransaction
()
獲取與這個session關聯的Transaction(事務) 實例。 instance associated with this session. |
boolean
|
isConnected
()
檢查當前Session 是否處於連接狀態。 |
boolean
|
isDirty
()
當前Session 是否包含需要與數據庫同步的(數據狀態)變化 ?如果我們刷新提交(flush)這個session是否會有SQL執行? |
boolean
|
isOpen
()
檢查當前Session 是否仍然打開。 |
Object
|
load
(Class
theClass, Serializable
id)
在符合條件的實例存在的情況下,根據給定的實體類和標識返回持久化狀態的實例。 |
Object
|
load
(Class
theClass, Serializable
id, LockMode
lockMode)
在符合條件的實例存在的情況下,根據給定的實體類、標識及指定的鎖定等級返回持久化狀態的實例。 |
void
|
load
(Object
object, Serializable
id)
將與給定的標示對應的持久化狀態(值)複製到給定的自由狀態(trasient)實例上。 |
Object
|
load
(String
entityName, Serializable
id)
在符合條件的實例存在的情況下,根據給定的實體類和標識返回持久化狀態的實例。 |
Object
|
load
(String
entityName, Serializable
id, LockMode
lockMode)
在符合條件的實例存在的情況下,根據給定的實體類、標識及指定的鎖定等級返回持久化狀態的實例。 |
void
|
lock
(Object
object, LockMode
lockMode)
從給定的對象上獲取指定的鎖定級別。 |
void
|
lock
(String
entityName, Object
object, LockMode
lockMode)
從給定的對象上獲取指定的鎖定級別。 |
Object
|
merge
(Object
object)
將給定的對象的狀態複製到具有相同標識的持久化對象上。 |
Object
|
merge
(String
entityName, Object
object)
將給定的對象的狀態複製到具有相同標識的持久化對象上。 |
void
|
persist
(Object
object)
將一個自由狀態(transient)的實例持久化。 |
void
|
persist
(String
entityName, Object
object)
將一個自由狀態(transient)的實例持久化。 |
void
|
reconnect
()
不推薦的。 手工的重新連接只應用於應用程序提供連接的情況,在這種情況下或許應該使用 reconnect(java.sql.Connection)
。
|
void
|
reconnect
(Connection
connection)
重新連接到給定的JDBC連接。 |
void
|
refresh
(Object
object)
從數據庫中重新讀取給定實例的狀態。 |
void
|
refresh
(Object
object, LockMode
lockMode)
根據指定的鎖定模式(LockMode) ,從數據庫中重新讀取給定實例的狀態。 |
void
|
replicate
(Object
object, ReplicationMode
replicationMode)
使用當前的標識值持久化給定的遊離狀態(Transient)的實體。 |
void
|
replicate
(String
entityName, Object
object, ReplicationMode
replicationMode)
使用當前的標識值持久化給定的遊離狀態(Transient)的實體。 |
Serializable
|
save
(Object
object)
首先爲給定的自由狀態(Transient)的對象(根據配置)生成一個標識並賦值,然後將其持久化。 |
Serializable
|
save
(String
entityName, Object
object)
首先爲給定的自由狀態(Transient)的對象(根據配置)生成一個標識並賦值,然後將其持久化。 |
void
|
saveOrUpdate
(Object
object)
根據給定的實例的標識屬性的值(注:可以指定unsaved-value。一般默認null。)來決定執行 save() 或update() 操作。 |
void
|
saveOrUpdate
(String
entityName, Object
object)
根據給定的實例的標識屬性的值(注:可以指定unsaved-value。一般默認null。)來決定執行 save() 或update() 操作。 |
void
|
setCacheMode
(CacheMode
cacheMode)
設置刷新提交模式。 |
void
|
setFlushMode
(FlushMode
flushMode)
設置刷新提交模式。 |
void
|
setReadOnly
(Object
entity, boolean readOnly)
將一個未經更改的持久化對象設置爲只讀模式,或者將一個只讀對象標記爲可以修改的模式。 |
void
|
update
(Object
object)
根據給定的detached(遊離狀態)對象實例的標識更新對應的持久化實例。 |
void
|
update
(String
entityName, Object
object)
根據給定的detached(遊離狀態)對象實例的標識更新對應的持久化實例。 |