本节讨论 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如果某些应用程序需要多个数据库连接,则
一个线程可以管理多个实例。
每个会话都有自己的域对象集合,每个域对象代表数据库中一行的数据。域对象可以表示以下任何状态的数据:
新的; 尚未存储在数据库中
从数据库中检索;可用于应用程序
更新; 存储回数据库
从数据库中删除
