下载本手册
PDF(美国Ltr)- 3.3 mb
PDF (A4)- 3.3 mb
HTML下载(TGZ)- 0.5 mb
HTML下载(Zip)- 0.5 mb


4.1.3 ClusterJ API和数据对象模型

本节讨论ClusterJ API和用于表示应用程序处理的数据的对象模型。

应用程序编程接口。ClusterJ API依赖于4个主要接口:会话SessionFactory事务,QueryBuilder

会话接口。所有对NDB集群数据的访问都是在会话上下文中完成的。的会话接口代表用户或应用程序与NDB集群的个别连接。它包含以下操作的方法:

SessionFactory接口。会话从SessionFactory其中,对于您希望从Java VM访问的每个NDB Cluster,通常都有一个单独的实例。SessionFactory存储NDB集群管理服务器的主机名、端口号等配置信息。它还存储有关如何连接到集群的参数,包括连接延迟和超时。有关SessionFactory及其在ClusterJ应用程序中的使用的更多信息,请参见获取SessionFactory和获取Session

交易界面。控件不管理事务会话接口;与其他现代应用程序框架一样,ClusterJ将事务管理与其他持久性方法分离开来。事务划分可以由容器或web服务器servlet过滤器自动完成。删除事务完成方法会话促进关注点的分离。

事务接口支持事务数据库所需的标准开始、提交和回滚行为。此外,它允许用户将事务标记为仅回滚,这使得不负责完成事务的组件可以指示—由于应用程序或数据库错误—事务必须不允许正常完成。

QueryBuilder接口。QueryBuilder接口使得动态构造条件查询成为可能,使用域对象模型属性作为查询建模元素。可以指定参数和数据库列值之间的比较,包括相等、大于和小于、之间和在操作中。这些比较可以使用与布尔运算符AND、OR和NOT对应的方法进行组合。值的比较也受支持。

数据模型。ClusterJ使用域对象提供对NDB Cluster中的数据的访问,在许多方面类似于JPA建模数据的方式。

在ClusterJ中,域对象映射具有以下特征:

  • 所有表都映射到持久接口。对于每一个NDB表,ClusterJ使用一个或多个接口。在许多情况下,使用单一接口;但是对于应用程序的不同部分需要不同列的情况,可以将多个接口映射到同一个表。

    然而,类本身不是持久的。

  • 用户将列的子集映射到接口中的持久属性。因此,所有属性都映射到列;然而,并非所有列都必须映射到属性。

    所有ClusterJ属性名默认为列名。该接口为每个属性提供getter和setter方法,并提供可预测的对应方法名。

  • 接口上的注释定义映射。

应用程序环境和域对象的用户视图如下图所示,图中显示了ClusterJ接口的建模元素之间的逻辑关系:

图4.2应用程序和环境的ClusterJ用户视图

ClusterJ应用程序和环境的用户视图

SessionFactory由属性对象配置,该属性对象可能已从文件加载或由应用程序使用其他方法动态构造(参见第4.2.2.1节“执行ClusterJ应用程序和会话”).

应用程序获得会话的实例SessionFactory,最多有一个线程使用会话一次。一个线程可以管理多个线程会话实例,如果应用程序需要多个到数据库的连接。

每个会话都有自己的域对象集合,每个域对象代表数据库中一行的数据。域对象可以表示以下状态中的数据:

  • 新;尚未存储在数据库中

  • 从数据库检索;可用于应用程序

  • 更新;被存储回数据库中

  • 从数据库中删除