相关文档 下载本手册
PDF (US Ltr) - 3.6Mb
PDF (A4) - 3.6Mb


4.3.1.1 主要接口

ClusterJ 为应用程序提供以下主要接口:com.mysql.clusterj.SessionFactorycom.mysql.clusterj.Sessioncom.mysql.clusterj.Transactioncom.mysql.clusterj.query.QueryBuildercom.mysql.clusterj.Query引导 帮助类 com.mysql.clusterj.ClusterJHelper 包含用于创建 com.mysql.clusterj.SessionFactory 的方法。 引导 是识别 NDB Cluster 并获取用于与集群交互的 SessionFactory 的过程。每个集群每个 Java VM 只有一个 SessionFactory。

4.3.1.1.1 SessionFactory

The com.mysql.clusterj.SessionFactory 是通过属性配置的,这些属性标识了应用程序连接到的 NDB Cluster

  • com.mysql.clusterj.connectstring 标识 ndb_mgmd 主机名和端口

  • com.mysql.clusterj.connect.retries 是连接时的重试次数

  • com.mysql.clusterj.connect.delay 是连接重试之间的延迟(秒)

  • com.mysql.clusterj.connect.verbose 指示连接时是否向 System.out 显示消息

  • com.mysql.clusterj.connect.timeout.before 是等待第一个节点响应连接请求的时间(秒)

  • com.mysql.clusterj.connect.timeout.after 是等待最后一个节点响应连接请求的时间(秒)

  • com.mysql.clusterj.connect.database 是要使用的数据库名称

    File propsFile = new File("clusterj.properties");
    InputStream inStream = new FileInputStream(propsFile);
    Properties props = new Properties();
    props.load(inStream);
    SessionFactory sessionFactory = ClusterJHelper.getSessionFactory(props);

Session The com.mysql.clusterj.Session 代表用户对集群的个人连接。它包含用于

  • 通过主键查找持久实例

  • 持久实例工厂 (newInstance)

  • 持久实例生命周期管理 (persist, remove)

  • 获取 QueryBuilder

  • 获取 Transaction (currentTransaction)

    Session session = sessionFactory.getSession();
    Employee existing = session.find(Employee.class, 1);
    if (existing != null) {
        session.remove(existing);
    }
    Employee newemp = session.newInstance(Employee.class);
    newemp.initialize(2, "Craig", 15, 146000.00);
    session.persist(newemp);

Transaction The com.mysql.clusterj.Transaction 允许用户将多个操作组合到单个数据库事务中。它包含用于

  • 开始一个工作单元

  • 提交来自工作单元的更改

  • 回滚自工作单元开始以来所做的所有更改

  • 标记一个工作单元以仅回滚

  • 获取当前工作单元的回滚状态

    Transaction tx = session.currentTransaction();
    tx.begin();
    Employee existing = session.find(Employee.class, 1);
    Employee newemp = session.newInstance(Employee.class);
    newemp.initialize(2, "Craig", 146000.00);
    session.persist(newemp);
    tx.commit();

QueryBuilder The com.mysql.clusterj.query.QueryBuilder 允许用户构建查询。它包含用于

  • 定义要查询的域对象模型

  • 使用参数比较属性

    • 等于

    • 小于

    • 大于

    • 小于等于

    • 大于等于

    • 介于

    • 包含在

  • 使用 "and"、"or" 和 "not" 运算符组合比较

    QueryBuilder builder = session.getQueryBuilder();
    QueryDomainType<Employee> qemp = builder.createQueryDefinition(Employee.class);
    Predicate service = qemp.get("yearsOfService").greaterThan(qemp.param("service"));
    Predicate salary = qemp.get("salary").lessEqual(qemp.param("salaryCap"));
    qemp.where(service.and(salary));
    Query<Employee> query = session.createQuery(qemp);
    query.setParameter("service", 10);
    query.setParameter("salaryCap", 180000.00);
    List<Employee> results = query.getResultList();