0

休止状態を使用して別のクラスとテーブルにいくつかのフィールドを永続化する簡単な方法はありますか?

たとえば、、、、、、、、フィールドを持つPersonクラスがnameあります。クラスを次のようにしたい:surnameemailaddress1address2citycountry

public class Person
{
   private String name;
   private String surname;
   private String email;
   private Address address;
   // ..
}

public class Address
{
   private Person person; // to whom this belongs
   private String address1;
   private String address2;
   private String city;
   private String country;
   // ..
}

アドレスを別のテーブルに保存したい。これを達成するための最良の方法は何ですか?

編集:注釈を使用しています。私が説明した方法である必要はありません。ベスト プラクティスを探しています。

編集 2:アドレスの ID は何になりますか?

PS。Address を不変にする (値オブジェクトとして使用する) 方法があれば、それはさらに良いことですが、そうではないかもしれません。

4

2 に答える 2

2
  1. エンティティとしてマップAddressし、主キー (自動生成された ID) を追加します
  2. との関係Personを(各フィールドで)マッピングするAddressone-to-one@OneToOne
于 2010-04-06T14:28:05.200 に答える
1

Hibernate 3.5 では、外部ジェネレーター(別名 JPA マッピング) を定義できます。詳細については、こちらを参照してください。

Person実装する必要があるのは非常に簡単でSerializable@Id注釈が に追加されpersonます。

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}

代替手段がありますが、私は最初のものを本当に気に入っています。

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   private int personId;

   @MapsId
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}
于 2010-04-08T11:52:41.213 に答える