[seasar-s2dao-dev:365] Re: メタデータを使わずにプロパティからカラムの名前を決定できるようにする

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2007年 8月 3日 (金) 01:45:10 JST


中村(taedium)です。

> > > Beanに複数のIDアノテーションを持たせるようにして、
> > > それぞれに指定された方法で採番してしまってもいいのかもしれないですね。
> >
> > 「メインのID」のみをPKにすれば良いと思うのですけれど。
> > (S2Daoが解決する問題なのかなあ...)
> 
>  うぅ、私の周辺では複合主キーの方が多いようです。。。

現在IDアノテーションがついているとメタデータにアクセスしませんが、
IDアノテーションが使えるのは単一の主キーの場合だけです。
そこでIDアノテーションを複合主キーのときにも使えるようにして
複合主キーの場合にもメタデータにアクセスしないようにしたい、
というのが第一の狙いです。

そうすると次のようなコードが書けるようになります。
それぞれのIDアノテーションにIdTypeを指定できるので
それに従って採番するのが自然かなと思います。

@Id(value=IdType.SEQUENCE, sequenceName="HOGE_SEQ")
public setAaaId(...){}

@Id(value=IdType.ASSIGNED)
public setBbbId(...){}

>  なるほど、そういう実装ですね。私が考えていたのは、現状setupPropertyPersistentAndColumnName
> の一部を別クラスにして、例えば以下のような感じで呼び出すというイメージ
> でした。
> 
> columnNameConverter.convert(this, dbMetaData, tableName, beanAnnotationReader);

私もConverterとかResolverでカラム名を解決することをイメージしていました。
+1

>  ただ、BeanAnnotationReaderまで渡さないといけないので、ちょっと違和感が
> あるのですが(^^;

AnnotationReaderFactoryがDIされるようになっていれば
引数で渡さなくてもいけそうですね。
-- 
Toshihiro Nakamura



seasar-s2dao-dev メーリングリストの案内