- 4.3.1.20.1 概要
- 4.3.1.20.2 close()
- 4.3.1.20.3 createQuery(QueryDefinition<T>)
- 4.3.1.20.4 currentTransaction()
- 4.3.1.20.5 deletePersistent(Class<T>, Object)
- 4.3.1.20.6 deletePersistent(Object)
- 4.3.1.20.7 deletePersistentAll(Class<T>)
- 4.3.1.20.8 deletePersistentAll(Iterable<?>)
- 4.3.1.20.9 find(Class<T>, Object)
- 4.3.1.20.10 flush()
- 4.3.1.20.11 found(Object)
- 4.3.1.20.12 getQueryBuilder()
- 4.3.1.20.13 isClosed()
- 4.3.1.20.14 load(T)
- 4.3.1.20.15 makePersistent(T)
- 4.3.1.20.16 makePersistentAll(Iterable<?>)
- 4.3.1.20.17 markModified(Object, String)
- 4.3.1.20.18 newInstance(Class<T>)
- 4.3.1.20.19 newInstance(Class<T>, Object)
- 4.3.1.20.20 persist(Object)
- 4.3.1.20.21 release(T)
- 4.3.1.20.22 remove(Object)
- 4.3.1.20.23 savePersistent(T)
- 4.3.1.20.24 savePersistentAll(Iterable<?>)
- 4.3.1.20.25 setLockMode(LockMode)
- 4.3.1.20.26 setPartitionKey(Class<?>, Object)
- 4.3.1.20.27 unloadSchema(Class<?>)
- 4.3.1.20.28 updatePersistent(Object)
- 4.3.1.20.29 updatePersistentAll(Iterable<?>)
Session 是叢集的主要使用者介面。Session 延伸 AutoCloseable,因此可以用在 try-with-resources 模式中。此模式允許應用程式在 try 宣告中建立 session,且無論 try/catch/finally 區塊的結果為何,clusterj 都會清除並關閉 session。如果 try 區塊在有開啟的交易的情況下結束,則交易會在 session 關閉之前回復。
public interface Session extends, AutoCloseable {
// Public Methodspublic abstract void close();
public abstract Query<T> createQuery(QueryDefinition<T> qd);
public abstract Transaction currentTransaction();
public abstract void deletePersistent(Class<T> cls,
Object key);public abstract void deletePersistent(Object instance);
public abstract int deletePersistentAll(Class<T> cls);
public abstract void deletePersistentAll(Iterable<?> instances);
public abstract T find(Class<T> cls,
Object key);public abstract void flush();
public abstract Boolean found(Object instance);
public abstract QueryBuilder getQueryBuilder();
public abstract boolean isClosed();
public abstract T load(T instance);
public abstract T makePersistent(T instance);
public abstract Iterable<?> makePersistentAll(Iterable<?> instances);
public abstract void markModified(Object instance,
String fieldName);public abstract T newInstance(Class<T> cls);
public abstract T newInstance(Class<T> cls,
Object key);public abstract void persist(Object instance);
public abstract T release(T obj);
public abstract void remove(Object instance);
public abstract T savePersistent(T instance);
public abstract Iterable<?> savePersistentAll(Iterable<?> instances);
public abstract void setLockMode(LockMode lockmode);
public abstract void setPartitionKey(Class<?> cls,
Object key);public abstract String unloadSchema(Class<?> cls);
public abstract void updatePersistent(Object instance);
public abstract void updatePersistentAll(Iterable<?> instances);
}
public abstract Query<T> createQuery(QueryDefinition<T> qd);
從 QueryDefinition 建立 Query。
public abstract void deletePersistent(Class<T> cls,
Object key);
從資料庫中刪除類別的執行個體 (給定其主索引鍵)。對於單一資料行的索引鍵,索引鍵參數是包裝函式 (例如 Integer)。對於多個資料行的索引鍵,索引鍵參數是 Object[],其中的元素會依序對應到結構描述中定義的主索引鍵。
public abstract void deletePersistent(Object instance);
從資料庫中刪除執行個體。只有 id 欄位會用來判斷要刪除哪個執行個體。如果執行個體不存在於資料庫中,則會擲回例外。
public abstract int deletePersistentAll(Class<T> cls);
從資料庫中刪除此類別的所有執行個體。即使資料庫中沒有任何執行個體,也不會擲回例外。
public abstract void deletePersistentAll(Iterable<?> instances);
從資料庫中刪除所有參數執行個體。
public abstract T find(Class<T> cls,
Object key);
根據主索引鍵尋找特定的執行個體。索引鍵的類型必須與對應於 cls 參數的資料表所定義的主索引鍵類型相同。索引鍵參數是索引鍵基本類型的包裝版本,例如 INT 索引鍵類型的 Integer、BIGINT 索引鍵類型的 Long 或 char 和 varchar 類型的 String。對於多資料行主索引鍵,索引鍵參數是 Object[],其中的每個元素都是主索引鍵的元件。這些元素的順序必須與 CREATE TABLE 陳述式的資料行宣告順序相同 (不一定是 CONSTRAINT ... PRIMARY KEY 子句中定義的順序)。
public abstract Boolean found(Object instance);
是否在資料庫中找到對應於此執行個體的資料列?
表格 4.52 found(Object)
參數 | 說明 |
---|---|
instance | 資料庫中對應於該列的實例。 |
傳回 |
|
public abstract QueryBuilder getQueryBuilder();
取得 QueryBuilder。
public abstract boolean isClosed();
此連線是否已關閉?
public abstract T load(T instance);
將實例從資料庫載入記憶體。載入是非同步的,將在執行需要資料庫存取的作業時執行:find、flush 或 query。實例必須是從 find 或 query 傳回;或是透過 session.newInstance 建立且其主鍵已初始化。
public abstract Iterable<?> makePersistentAll(Iterable<?> instances);
將實例插入資料庫。
public abstract void markModified(Object instance,
String fieldName);
將物件中的欄位標記為已修改,以便將其刷新。
public abstract T newInstance(Class<T> cls);
建立對應於資料表的介面或動態類別的實例。
public abstract T newInstance(Class<T> cls,
Object key);
建立對應於資料表的介面或動態類別的實例,並設定新實例的主鍵。新實例可用於在資料庫中建立、刪除或更新記錄。
public abstract void persist(Object instance);
將實例插入資料庫。此方法的語意與 makePersistent 相同。
public abstract T release(T obj);
釋放與實例相關聯的資源。實例必須是透過 session.newInstance(T.class)、find(T.class) 或 query 取得的網域物件;或是 Iterable 或陣列 T[]。釋放的資源可能包含用於保存實例資料的直接緩衝區。釋放的資源可能會返回到集區。
例外狀況
-
ClusterJUserException
如果實例不是網域物件 T、Iterable 或陣列 T[],或是在呼叫此方法後使用該物件。
public abstract void remove(Object instance);
從資料庫中刪除實例。此方法的語意與 deletePersistent 相同。
public abstract T savePersistent(T instance);
將實例儲存到資料庫,而不檢查是否存在。id 欄位用於決定要儲存哪個實例。如果實例存在於資料庫中,則會更新它。如果實例不存在,則會建立它。
public abstract Iterable<?> savePersistentAll(Iterable<?> instances);
更新資料庫中的所有參數實例。
public abstract void setLockMode(LockMode lockmode);
設定讀取操作的鎖定模式。這會立即生效,並會保持有效,直到此連線關閉或再次呼叫此方法。
public abstract void setPartitionKey(Class<?> cls,
Object key);
為下一個交易設定分割區索引鍵。索引鍵的類型必須與對應於 cls 參數的資料表所定義的主鍵類型相同。key 參數是索引鍵原始類型的包裝版本,例如,INT 索引鍵類型為 Integer、BIGINT 索引鍵類型為 Long,字元和 varchar 類型則為 String。對於多欄主鍵,key 參數是一個 Object[],其每個元素都是主鍵的一個組成部分。這些元素必須按照 CREATE TABLE 陳述式的欄位宣告順序(不一定是 CONSTRAINT ... PRIMARY KEY 子句中定義的順序)排列。
例外狀況
-
ClusterJUserException
如果已加入交易
-
ClusterJUserException
如果分割區索引鍵為 null
-
ClusterJUserException
如果在同一個交易中呼叫兩次
-
ClusterJUserException
如果分割區索引鍵類型錯誤
public abstract String unloadSchema(Class<?> cls);
卸載類別的綱要定義。這必須在資料庫中的綱要定義由於 alter table 命令而變更後完成。下次使用該類別時,將會重新載入綱要。
public abstract void updatePersistent(Object instance);
更新資料庫中的實例,而不一定要先擷取它。id 欄位用於決定要更新哪個實例。如果實例不存在於資料庫中,則會擲回例外狀況。此方法不能用於變更主鍵。