[seasar-s2dao-dev:369] Re: メタデータを使わずにプロパティからカラムの名前を決定できるようにする
    Toshihiro Nakamura
    [E-MAIL ADDRESS DELETED]
       
    2007年 8月  3日 (金) 12:43:30 JST
    
    
  
中村(taedium)です。
>   AAA BBB XXX
>   --- --- ---
>     1   1   A
>     2   2   B
>     3   3   C
>     4   4   D
> 
> みたいな採番になりませんか? AAA・BBBともにIDアノテーションが
> 付いていますから。
> そうだとAAAだけでユニークになりますから、「複合主キーで一部
> のキーはシーケンスから採番」というテーブルにする必要性が無い
> のではと思ったのです。
> (採番している方だけを主キーにすれば良いのでは、と。)
Beanに複数のIDアノテーションを持たせるようにして
それぞれ指定された方法で採番してしまってもよいかもと思った
理由は2つあります。
■自分で変更できないDBスキーマを考慮して
私も採番している方だけを主キーにすれば良いと思うのですけど、
レガシー?なDB設計では複合主キーで一部がシーケンスというの
もあるのかなぁと思いました。
(私も新規にDB設計できるなら断然単一の主キーにしたい派です)
■@Idの仕様を考慮して
複合主キーでよくあるケースは自分で設定するパターンだと思いますが
@Idを使った場合こう書けます。
@Id
public void setAaaId(...){}
@Id
public void setBbbId(...){}
この場合は問題ないのですが、
もし、片方の@Idにシーケンスを使うという指定があったときに
どうしたらいいのかと考えてみると
1.警告してシーケンスの設定は無視する、
2.例外とする、
3.その指定に従う
などの仕様があると思ったのですが、3.が一番
自然に思えたのです。
複合主キーのときに@Idとは別のアノテーションを用意するという
ことも考えたのですけどそれよりは@Idで統一できたほうがわかりやすい
かなと思いました。
-- 
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
    
    
seasar-s2dao-dev メーリングリストの案内