- - PR -
DBテーブルとJavaクラスのマッピング
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-19 01:26
RDBMSによって識別子がケースセンシティブだったりしますね。
照合順の設定とかで変わったりとか・・・ | ||||||||||||||||
|
投稿日時: 2007-04-19 10:31
通常はCase Insensitiveでも、CREATE TABLEのときに二重引用符で囲っておけばCase SensitiveになってくれるRDBMSは多い(というかSQL標準)ので、それを使えばJava方式と統一できますが、そうするとSELECT文とか記述するときも常にテーブル名・カラム名を二重引用符で囲わないといけないので、それも面倒です。
| ||||||||||||||||
|
投稿日時: 2007-04-19 11:40
EJB3.0 はよくわからないのでお訊きしたいのですが、 DDLで、
と記述して、 Java 側で、
とするのは、問題あるのでしょうか(EJB3.0 JPAのルールに違反しているとか)? 私も普段S2DAO 使っているので、
でOKなんですよね。 | ||||||||||||||||
|
投稿日時: 2007-04-19 11:52
いえ、それは問題ないです。 多分でゅうくさんが言っている「DBMS のユーザーインタフェース」というのは、OracleやMS SQL ServerのEnterprise Manager(名前同じじゃん)みたいなツールのことです。自分でSQL書く分にはいいのですが、そういうツールで例えばテーブルのリストや、テーブル定義を見ようとすると、全部大文字(または小文字)で表示されるので、単語区切りがないと非常に見辛いのです。 | ||||||||||||||||
|
投稿日時: 2007-04-19 13:24
カーニーさんのおっしゃる通りのことを言いたかった訳ですよ。単に見辛いと。 言葉足らずでごめんなさい。 しかも、引用でケースセンシティブになるのを知りませんでした。 | ||||||||||||||||
|
投稿日時: 2007-04-19 13:35
なるほど、納得です。確かに、そういうツールだと見づらいですね。 Oracle だと、テーブルとかカラムにコメント付けられなかったでしたっけ? そういうので何とかできるといいな、と思いつつ、試したことはないです。 普段、開発/保守している範囲では、Enterprise Manager みたいなツールは あまり使わないです。ユーザの作成や、表領域の操作では使いますが、 テーブル関係は、ほとんどSQL投げて終わりなので、あまりそういう点で 悩んだことはないです。
同じく知りませんでした(^^; 勉強になります。 | ||||||||||||||||
|
投稿日時: 2007-04-19 14:08
やっぱり今までのルールは変えずに、@Table(name="...")、@Column(name="...")で、丁寧に名前を指定してあげるのがよいように思えてきた・・・。
単数形 or 複数形もやっぱり違和感が残るし。 概念的に、クラスって「型」じゃないですか。なので名前は単数形。 テーブルは「集合」だから、複数形がぴったりくるんですよね・・・。 こういうのもインピーダンスミスマッチと言うんだろか。 | ||||||||||||||||
|
投稿日時: 2007-04-20 00:49
クラス:テーブル
インスタンス:行 と考えると、あんまり違和感なかったりしません? 行の集合によって複数形になっても、 テーブル自体は概念と考えればクラスと同じように単数形と考えてしまいますね。 ところでテーブル名やカラム名をアッパーキャメルケースにすると、 確かに管理ツールの類では見難いですね。 あと、私がJavaと同じ名前を使うのにはもう1つ理由があって、 名前の類はコピペしたいからというのがあります。 タイプミスによるリトライや、ここの名前って何だっけ?って考える時間を、 極力減らすという目的です。 さらに言うとエディタによってはアンダスコア区切りだと、 名前をダブルクリックしたときに、名前が全て区切られなかったりしますね。 コピペがしにくい気がします。 |