- 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 扩展了 AutoCloseable,因此它可以在 try-with-resources 模式中使用。此模式允许应用程序在 try 声明中创建会话,并且无论 try/catch/finally 块的结果如何,clusterj 都会清理并关闭会话。如果 try 块退出时存在打开的事务,则会在关闭会话之前回滚该事务。
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);
根据主键从数据库中删除类的实例。对于单列键,key 参数是一个包装器(例如 Integer)。对于多列键,key 参数是一个 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 参数对应的表定义的主键类型相同。key 参数是键的原始类型的包装版本,例如 INT 键类型为 Integer,BIGINT 键类型为 Long,char 和 varchar 类型为 String。对于多列主键,key 参数是一个 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);
将实例从数据库加载到内存中。加载是异步的,将在执行需要数据库访问的操作时执行:查找、刷新或查询。该实例必须已从查找或查询返回;或通过 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) 或查询获取的域对象;或 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 或 char 和 varchar 类型的 String。对于多列主键,key 参数是一个 Object[],其中的每个元素都是主键的一个组成部分。元素的顺序必须与 CREATE TABLE 语句中列的声明顺序(不一定是 CONSTRAINT ... PRIMARY KEY 子句中定义的顺序)相同。
异常
-
ClusterJUserException
如果已登记事务
-
ClusterJUserException
如果分区键为空
-
ClusterJUserException
如果在同一事务中调用两次
-
ClusterJUserException
如果分区键的类型错误
public abstract String unloadSchema(Class<?> cls);
卸载类的架构定义。由于 alter table 命令导致数据库中的架构定义发生更改后,必须执行此操作。下次使用该类时,将重新加载架构。
public abstract void updatePersistent(Object instance);
更新数据库中的实例,而不必检索它。id 字段用于确定要更新哪个实例。如果实例在数据库中不存在,则会引发异常。此方法不能用于更改主键。