0

私がこのようなクラスを持っているとしましょう

@Entity
public class Customer implements Serializable {
    private int id;
    private String firstName;
    private String lastName;
    private Referee referee;
    private Collection<Address> addresses;
    private Collection<Account> accounts;
    .....
} //end of class Customer

@Entity
public class Referee implements Serializable {
    private int id;
    private String name;
    private String comments;
    ....
} //end of class Referee

@Entity 
public class Account implements Serializable {
    private int id;
    private double balance;
    private String accountType;
    ...
}

@Entity
public class Address implements Serializable {
    private int id;
    private String addressLine;
    private String country;
    private String postCode;
    ...
}

ここで、Customerという名前のデータベースにテーブルを作成するとします。次に、タイプにどのタイプを使用しますかRefereeCollection<Address>およびCollection<Account>。列IDを作成した場合のように、そのタイプはになりますINTEGER。文字列はに変更されVARCHARますが、コレクションとレフリーにはどのタイプを使用しますか?ありがとう

4

1 に答える 1

0

レフリーフィールドは、int型のレフリークラスのidフィールドを格納する必要があるため、データベースでは整数になります。

コレクションは、クラスのIDにも基づいています。1からNの関係の場合、N側の列を使用できます。したがって、顧客が複数の住所を持っているが、住所が複数の顧客に属していない場合は、顧客のIDを住所テーブルに保存して関係を保存できます。NからMの場合、顧客IDと住所IDのペアを格納する追加のいわゆる結合テーブルが必要になります。アカウントについても同じ話です。

ところで、多くのJPAプロバイダーは、その方法についてのマニュアルを参照して、テーブルを生成できます。

JPAを初めて使用する場合は、JPAに関する優れた本を入手する必要があります。いくつかのチュートリアルでは、それをうまく使用するための十分な知識が得られません。個人的には、Pro EJB 3:JavaPersistenceAPIを読みました。

JPAを学習する場合、NetBeans IDEは非常に役立つだけでなく、エンティティに注釈を付けるための多くの有用なヒントを提供します。たとえば、コレクションに追加の注釈が必要であり、1対多または多対多および単方向または双方向の選択肢が提供されます。

于 2012-08-09T11:03:00.843 に答える