マッピングファイルがなくても動作する機能の記述方法イメージ
うーん、確かにS2Daoと機能がかぶってしまって、意味なしですね。
リリースせずに、個人的に使うだけになるかも。まぁ、その前に実装始めないとできるかどうか、まだ調査しきれてないので。
とりあえず、イメージしていた内容を書いてみます。。。
次の2つのパターンで書いてみます。
・すべての永続化するクラスで、マッピングファイルを指定するパターン(今のS2Hibernateを使った場合)
・マッピングファイルで指定する永続クラスと、アノテーションでマッピングさせる永続クラスを併用するパターン(追加しようと思っている機能)
■すべての永続化するクラスで、マッピングファイルを指定するパターン(今のS2Hibernateを使った場合)
・永続クラスEmployee.java
・Employee.javaとEMPテーブルののマッピングファイル
package examples.hibernate.entity;import java.io.Serializable;
public class Employee implements Serializable {
private long empno;
private String ename;
private String job;
private short deptno;public Employee() {}
public Employee(long empno) { this.empno = empno; }public long getEmpno() { return this.empno; }
public void setEmpno(long empno) { this.empno = empno; }public java.lang.String getEname() { return this.ename; }
public void setEname(java.lang.String ename) { this.ename = ename; }public java.lang.String getJob() { return this.job; }
public void setJob(java.lang.String job) { this.job = job; }public short getDeptno() { return this.deptno; }
public void setDeptno(short deptno) { this.deptno = deptno; }}
・hibernate.cfg.xml(hibernateのpropertyの設定とEmployee.hbm.xmlの読み込みを行っているファイル)
・diconファイル
net.sf.hibernate.dialect.HSQLDialect
true
■マッピングファイルで指定する永続クラスと、アノテーションでマッピングさせる永続クラスを併用するパターン(追加しようと思っている機能)
次のように、javaBeansにテーブル名と、id、generatorなどを定数アノテーションで指定して、
diconファイルのS2SessionFactoryの部分で、アノテーションを追加しているjavaBeansと、手動(またはツールで作成)で記述したマッピングファイルを指定する。
・永続クラスEmployee.java
・diconファイル
package examples.hibernate.entity;import java.io.Serializable;
public class Employee implements Serializable {
public static final String TABLE = "EMP"; //マッピングさせるテーブル名の指定
public static final String empno_ID = "assigned"; //プライマリーキーと、generator の指定private long empno;
private String ename;
private String job;
private short deptno;public Employee() {}
public Employee(long empno) { this.empno = empno; }public long getEmpno() { return this.empno; }
public void setEmpno(long empno) { this.empno = empno; }public java.lang.String getEname() { return this.ename; }
public void setEname(java.lang.String ename) { this.ename = ename; }public java.lang.String getJob() { return this.job; }
public void setJob(java.lang.String job) { this.job = job; }public short getDeptno() { return this.deptno; }
public void setDeptno(short deptno) { this.deptno = deptno; }}
"dialect"
"net.sf.hibernate.dialect.HSQLDialect"
"show_sql"
"true"
"examples.hibernate.entity.Employee"