[Seasar-user:12059] Re: S2JDBCのEntityアノテーションのname属性

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 12月 12日 (水) 18:00:07 JST


小林 (koichik) です.

Date:    Wed, 12 Dec 2007 16:46:52 +0900
From:    "kiyoshi hosoda" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12058] Re: S2JDBCのEntityアノテーションのname属性

> たとえばABCMartというエンティティ名だと、@Table(name="ABCMart")の記述が必要に
> なるんですよね。
> 
> @Entity
> @Table(name="ABCMart")
> public class ABCMart {
> 
> こんな感じですか・・・

テーブル名にキャメル記法を使う文化なら
PersistenceConvention をカスタマイズした方が
よいかと.

標準 SQL では,識別子は大文字・小文字を区別せず,
全て大文字で保持することになっています.
# ダブルクオートで囲んだ区切り識別子を除く.

ABCMart というテーブル名は,RDBMS 内部では
ABCMART として保持され,このテーブルの
メタデータを取得すると,ABCMart ではなく
ABCMART を返すのが標準 SQL としては正しいと
いうことです.
# 現実は実装によって,あるいは同じ実装でも
# 動作する環境や設定によって違いますが.

そのため,識別子にキャメル記法を使うと,
単語の境界が分からなくなる可能性もあります.

よって,識別子にはキャメル記法を使わず,
アンダースコア区切りを使うことが多いだろうと
判断して,PersistenceConvention のデフォルトも
それに合わせて決められています.

そうでないなら (テーブル名にキャメル記法を
使うなら),デフォルトの設定とは想定が違うので,
PersistenceConvention をカスタマイズして
使ってください.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内