2011-07-11 3 views
3

これは、他の人の経験から学ぶことを願って、ベストプラクティスの問題です。 @Column(name =)と@Table(name =)を使用して明示的に列と表の名前を指定することをお勧めしますか?いくつかの実装の詳細が変わるかもしれないと私は少し心配しています。また、それを指定することで、自分のコードのリファクタリングに対する耐性が得られるかもしれません。私は、コードを明示的に状態名にすることを明確にするかもしれないと思う。一方で、コードをもっと冗長にする必要がある場所を多くします。@Columnと@Tableで常に名前を指定するか、必要なときにのみ指定する必要があります

答えて

4

これはベストプラクティスに関する質問であるため、私は自分の考えを共有することしかできません。私によれば、重要な質問は「どのように流体がデータベース設計ですか?」です。 (これはおそらく、あなたのドメインモデルがどのように流動的になるかで決まります)。

いずれにせよ、私はテーブル名とカラム名を常に提供します。 (これはある程度の明快さを提供する)。エンティティ(エンティティアクセスを機能単位としてグループ化する)の上に抽象レイヤーを記述した場合、エンティティの設計の変更を適切に処理できます。

は、テーブルと列の名前を提供しないと、単にコードの読みやすさを低減し、適切な設計で、私たちはリファクタリングながら名前は任意の過度の回復力が発生しないことを確認することができます。私はエンティティモデルを再生成できなければならず、リファクタリングは抽象レイヤで正常に実行できます。私は私の考えをはっきりと表現したいと思っています。

+0

抽象レイヤの用語レイヤはここではゆるやかに使用されています。完全なデータアクセスレイヤである必要はありません。それは名前付きクエリの静的なコレクションかもしれません..私はあなたがアイデアを得ることを願っています。 –

+0

+1、私はあなたに同意します。 – home

1

私の2セント:与えられたプロジェクトでは、それはいつも、あるいは決して行いませんが、物事を混同しないでください。大規模な組織では、特定の命名規則に基づいてテーブルや列を定義する必要がある(有用な)データベース設計ガイドラインを見てきました。 プロジェクトの略語 _ カウンタ _ テーブルこれにより、MYPROJ_CUSTOMER_1のようなテーブル名が生成されます。これはJavaクラスの名前ではありません。

BTW:私はorm.xmlのファンです。このクラスを使用すると、Javaクラスからデータベースの詳細を削除し、XMLに戻すことができます。私はこれが最新ではないことを知っています:-)

関連する問題