Hatena::ブログ(Diary)

出羽ブログ RSSフィード

Seasar Conference 2008 Autumn - 9/6(SAT), Tokyo

2008-02-05

S2JDBCでジェネレーション ギャップ パターン

| 13:56 | S2JDBCでジェネレーション ギャップ パターンを含むブックマーク

エンティティは @MappedSuperclass が指定されたクラスを継承できます。

@MappedSuperclass には、エンティティと同じように永続プロパティを定義できます。 定義された永続プロパティは、サブクラスの永続プロパティとみなされます。 スーパークラスサブクラスインスタンスフィールドの名前が重複しないように定義してください。

Seasar2 - S2JDBC - エンティティ

S2JDBC でもジェネレーション ギャップ パターンが動作するようですね。

サクッと対応させて検証してみたところ、無事に動作しました。


オリジナルの Empエンティティ

Emp.java

package sample.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

@Entity
public class Emp {

    @Id
    @GeneratedValue
    public Integer id;

    public String name;

    @Temporal(TemporalType.DATE)
    public Date hireDate;
    
    public Integer deptId;

    @ManyToOne
    public Dept dept;

    @Version
    public Integer versionNo;
}

ジェネレーション ギャップ パターンに対応させた Empエンティティ

AbstractEmp.java

package sample.entity.base;

import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

import sample.entity.Dept;

@MappedSuperclass
public class AbstractEmp {

    @Id
    @GeneratedValue
    public Integer id;

    public String name;

    @Temporal(TemporalType.DATE)
    public Date hireDate;
    
    public Integer deptId;

    @ManyToOne
    public Dept dept;

    @Version
    public Integer versionNo;
}

Emp.java

package sample.entity;

import javax.persistence.Entity;

import sample.entity.base.AbstractEmp;

@Entity
public class Emp extends AbstractEmp {

}

Doltengでこんなことができるといいなぁ

| 12:26 | Doltengでこんなことができるといいなぁを含むブックマーク

Doltengで以前からこんなことができるといいなぁと

感じていたものをフィードバックとして書いてみる。


複数プロジェクト対応

フロントや管理用といったEntityパッケージ等の

共通パッケージを持たないwebアプリプロジェクト、

そして、複数のwebアプリから共有される共通プロジェクト、

さらに、各プロジェクトを管理・統括する

親プロジェクトを生成する。


実際に、このあたりの複数プロジェクトの構成で

困っている人は多いんじゃぁないかと思う。

Eclipse、Sysdeo・WTPMaven2等のバランスを

取りながら考えることが多く、一筋縄ではいかない。


レイアウト&Kumuライブラリ

レイアウトの雛形、および、Kumuのライブラリ

新規プロジェクト生成時に含めるかどうかを選択できる機能。


View On Serverのデフォルトキーバインド

HTMLファイルを開いた状態から対応するWebブラウザを開く

View On Servier は良く利用するので、

デフォルトのキーバインディングが欲しいところ。

あと、特に問題がなければPageクラスでも

View On Servierできると便利かも。


Teedaのサブアプリケーションの作成機能

ディレクトリとパッケージが作成され、

AbstractPageと Dxo の雛形が作られる。

AbstractPage には Dxoが DIされている。

Dxoを使用するしないは選択式がよさそう。)

jflutejflute 2008/02/06 16:33 > 複数プロジェクト対応
これは実はとても現場で苦労してる部分ですね。
WEBプロジェクトが3つあって、さらにバッチがいたりなど。
特にMavenが絡んでくると色々とややこしいことが多いです。
あとDiconの構成も悩みます。自分はXIncludeでなんとかしました。

jflutejflute 2008/02/06 16:34 > View On Serverのデフォルトキーバインド
無茶苦茶これ欲しいですね:)

dewadewa 2008/02/07 21:22 > あとDiconの構成も悩みます。自分はXIncludeでなんとかしました。
しまったー。以前のプロジェクトは、XIncludeじゃなくて、
通常のincludeを使っていた。

通常のincludeだとインクルード元とインクルード先で
別々のS2Containerインスタンスが出来てしまうのかぁ。


>> View On Serverのデフォルトキーバインド
>無茶苦茶これ欲しいですね:)

以前、手動でキーバインドを割り当てたけど、
上手く動作しなかったんだよなぁ。

トラックバック - http://d.hatena.ne.jp/dewa/20080205
Connection: close