データベースのエンティティを作成します

レンジャーGREF:

例えば、私は、テーブルブック(ID、タイトル、themeId、authorId)、テーブルの作者(ID、名前)とテーブルのテーマ(ID、名前)でデータベースを持っています。私は正確にデータベースのようにエンティティを作成する必要があります私は、知らない(そして私が参加したクエリに問題があります):

class Book {
    private id;
    String title;
    int bookThemeId;
    int bookAuthorId;
}

または、このようなものを作成します。

class Book {
    private id;
    String title;
    BookTheme bookTheme;
    Author bookAuthor;
}

authorIdまたはthemeIdがnull(それは可能性がある)と、一般的にDAOから取得に問題がある場合、私は唯一の図書リスト( - フィールドnullで、かつブックエンティティのための非常にかさばるビルダーの問題)を取得したい場合は、2番目のケースでは、私は、問題が発生します。

パトリック・サンタナ:

より多くのオブジェクトが向いているので、私は第二の選択肢となるだろう。あなたが最初のオプションで行くならば、あなたは詳細を取得する2番目のクエリを実行する必要があります。

@Entity
@Table(name = "books")
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;
    //... 

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "theme_id", referencedColumnName = "id")
    private BookTheme bookTheme;

    // ... getters and setters
}

フィールドは、右に作成されていないとき、あなたのIDはnullになりますか?例えば、それはデータベースに保存されるとき、それは常にIDを持つことになります。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=397080&siteId=1
おすすめ