4.2.2.3 注释

在 ClusterJ 中(如在 JPA 中),注释用于描述接口如何映射到数据库中的表。带注释的界面如下所示:

@PersistenceCapable(table="employee")
@Index(name="idx_uhash")
public interface Employee {

    @PrimaryKey
    int getId();
    void setId(int id);

    String getFirst();
    void setFirst(String first);
    String getLast();
    void setLast(String last);
  
    @Column(name="municipality")  
    @Index(name="idx_municipality")
    String getCity();
    void setCity(String city);
  
    Date getStarted();
    void setStarted(Date date);
  
    Date getEnded();
    void setEnded(Date date);

    Integer getDepartment();
    void setDepartment(Integer department);
}

此界面映射七列:idfirstlastmunicipality startedendeddepartment。注释 @PersistenceCapable(table="employee")用于让 ClusterJ 知道要映射 Employee到哪个数据库表(在本例中为 employee表)。使用 @Column注释是因为 和方法city隐含的属性名 与映射的列名不同 。注释 并 通知 ClusterJ 关于数据库表中的索引。 getCity()setCity()municipality@PrimaryKey@Index

此接口的实现由 ClusterJ 在运行时动态创建。当 newInstance() 方法被调用时,ClusterJ 为该Employee接口创建一个实现类;此类将值存储在内部对象数组中。

ClusterJ 不需要为每个属性都添加注解。ClusterJ 自动检测表的主键;虽然在 ClusterJ 中有一个注释允许用户描述表的主键(参见前面的示例),但在指定时,它目前会被忽略。(此注释的预期用途是从域对象模型接口生成模式,但目前尚不支持。)

注释本身必须从 ClusterJ API 导入。它们可以在 package 中找到 com.mysql.clusterj.annotation,并且可以像这样导入:

import com.mysql.clusterj.annotation.Column;
import com.mysql.clusterj.annotation.Index;
import com.mysql.clusterj.annotation.PersistenceCapable;
import com.mysql.clusterj.annotation.PrimaryKey;