Dali JPA Tools さわってみました

使ってみたバージョンは0.5。以下のサイトを参考にしました。

確認できたこと/気づいたこと

  • H2は正式サポートされていなけどH2上のテーブルからエンティティの生成できた。
    • 規約でマッピングできるところにはアノテーション(@Tableや@Column)をつけない方針らしい。コードがすっきりしてうれしい。
    • アノテーションはフィールドにつけるのがデフォルトみたい。これもコードがすっきりするのでうれしい。
    • リレーションシップを認識して@ManyToOneとかをつけてくれるわけではなかった。そもそもリレーションシップの追加をサポートする機能は見当たらなかった。
    • 生成されるプロパティの型はプリミティブ型だった。ラッパー型を使ってほしい。(Kuina-Daoで便利なので)
  • エンティティを生成した後テーブルを変更した場合にそれに対応してエンティティを変更してくれるような機能はないみたい。
  • エンティティからテーブルの作成はできなかった。
  • Database Explorer便利かも(DaliというよりもWTPのビューらしい)
    • テーブルの情報(カラムとか制約とか)を参照できる
    • データを参照したり変更できる
    • データのエクスポート/インポートができる
    • DDL生成できる
生成されたエンティティのコードはこんな感じでした。
@Entity
public class Emp implements Serializable {
  @Id
  private int id;

  private Date hiredate;

  @Column(name="DEPT_ID")
  private int deptId;

  private long sal;

  private String empname;

  private int versionno;

  private int empno;

  @Column(name="MGR_ID")
  private int mgrId;

  private static final long serialVersionUID = 1L;

  public Emp() {
    super();
  }

  public int getId() {
    return this.id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public Date getHiredate() {
    return this.hiredate;
  }

  public void setHiredate(Date hiredate) {
    this.hiredate = hiredate;
  }

  public int getDeptId() {
    return this.deptId;
  }

  public void setDeptId(int deptId) {
    this.deptId = deptId;
  }

  public long getSal() {
    return this.sal;
  }

  public void setSal(long sal) {
    this.sal = sal;
  }

  public String getEmpname() {
    return this.empname;
  }

  public void setEmpname(String empname) {
    this.empname = empname;
  }

  public int getVersionno() {
    return this.versionno;
  }

  public void setVersionno(int versionno) {
    this.versionno = versionno;
  }

  public int getEmpno() {
    return this.empno;
  }

  public void setEmpno(int empno) {
    this.empno = empno;
  }

  public int getMgrId() {
    return this.mgrId;
  }

  public void setMgrId(int mgrId) {
    this.mgrId = mgrId;
  }

}
@Entity
public class Dept implements Serializable {
  @Id
  private int id;

  private String deptname;

  private int versionno;

  private int deptno;

  private String loc;

  private static final long serialVersionUID = 1L;

  public Dept() {
    super();
  }

  public int getId() {
    return this.id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getDeptname() {
    return this.deptname;
  }

  public void setDeptname(String deptname) {
    this.deptname = deptname;
  }

  public int getVersionno() {
    return this.versionno;
  }

  public void setVersionno(int versionno) {
    this.versionno = versionno;
  }

  public int getDeptno() {
    return this.deptno;
  }

  public void setDeptno(int deptno) {
    this.deptno = deptno;
  }

  public String getLoc() {
    return this.loc;
  }

  public void setLoc(String loc) {
    this.loc = loc;
  }

}