Hibernate中Session的操作解釋

轉載至: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(遊離狀態)對象實例的標識更新對應的持久化實例。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章