本节讨论 ClusterJ API 和用于表示应用程序处理的数据的对象模型。
应用程序接口。
ClusterJ API 依赖于 4 个主要接口:
Session
、SessionFactory
、
Transaction
和
QueryBuilder
。
会话界面。
所有对 NDB Cluster 数据的访问都是在会话的上下文中完成的。该
Session
接口表示用户或应用程序与 NDB Cluster 的单独连接。它包含以下操作的方法:
通过主键查找持久化实例
创建、更新和删除持久化实例
获取查询构建器(参见 com.mysql.clusterj.query.QueryBuilder)
获取当前事务(参见 com.mysql.clusterj.Transaction)。
会话工厂接口。
会话是从 中获取的
SessionFactory
,对于您要从 Java VM 访问的每个 NDB Cluster,通常有一个实例。
SessionFactory
存储有关集群的配置信息,例如 NDB Cluster 管理服务器的主机名和端口号。它还存储有关如何连接到集群的参数,包括连接延迟和超时。有关 SessionFactory 及其在 ClusterJ 应用程序中的使用的更多信息,请参阅
获取 SessionFactory 和获取会话。
交易接口。
事务不由Session
接口管理;与其他现代应用程序框架一样,ClusterJ 将事务管理与其他持久性方法分开。事务划分可能由容器或在 Web 服务器 servlet 过滤器中自动完成。从中删除事务完成方法Session
有助于实现这种关注点分离。
该
Transaction
接口支持事务数据库所需的标准开始、提交和回滚行为。此外,它使用户能够将事务标记为仅回滚,这使得不负责完成事务的组件可以指示(由于应用程序或数据库错误)不得允许该事务才能正常完成。
查询生成器接口。
该
QueryBuilder
接口使动态构建标准查询成为可能,使用域对象模型属性作为查询建模元素。可以指定参数和数据库列值之间的比较,包括等于、大于和小于、介于和在操作。可以使用与布尔运算符 AND、OR 和 NOT 对应的方法组合这些比较。NULL
还支持
对值进行比较
。
数据模型。 ClusterJ 使用域对象提供对 NDB Cluster 中数据的访问,在许多方面类似于 JPA 数据建模的方式。
在ClusterJ中,领域对象映射具有以下特点:
-
所有表都映射到持久接口。对于集群中的每个
NDB
表,ClusterJ 使用一个或多个接口。在许多情况下,使用单个接口;但是对于应用程序的不同部分需要不同列的情况,可以将多个接口映射到同一个表。然而,这些类本身并不是持久的。
-
用户将列的子集映射到界面中的持久属性。因此,所有属性都映射到列;但是,并非所有列都必须映射到属性。
所有 ClusterJ 属性名称默认为列名称。该接口为每个属性提供 getter 和 setter 方法,具有可预测的相应方法名称。
接口上的注释定义映射。
下图说明了应用程序环境和域对象的用户视图,它显示了 ClusterJ 接口的建模元素之间的逻辑关系:
它SessionFactory
由属性对象配置,该对象可能已从文件加载或由应用程序使用其他方式动态构造(请参阅第 4.2.2.1 节,“执行 ClusterJ 应用程序和会话”)。
应用程序从 中获取Session
实例SessionFactory
,一次最多有一个线程处理 a Session
。Session
如果某些应用程序需要多个数据库连接,则
一个线程可以管理多个实例。
每个会话都有自己的域对象集合,每个域对象代表数据库中一行的数据。域对象可以表示以下任何状态的数据:
新的; 尚未存储在数据库中
从数据库中检索;可用于应用程序
更新; 存储回数据库
从数据库中删除