データ型
すべてのデータ型, 列挙型, UUID, ファイル, ブール値, 日時, 数値, その他
JPAマッピング
Ebeanマッピング拡張
コンストラクター
JPAとは異なり、Ebeanは既定のコンストラクタを必要としません。引数を持つコンストラクタを持つエンティティBeanを自由に作成できます。
命名規則
Ebeanは命名規則APIを使用しています。これは、通常、命名規則に従っていない場合にのみ@Column name
を指定する必要があるため、比較的重要な機能です。
同様に、命名規則(デフォルトでは「アンダースコア命名規則」)に従っている限り、通常、@JoinColumn
または@JoinTable
を明示的に使用する必要はありません。
コレクション
Hibernateとは異なり、EbeanではコレクションのマッピングにはSet
ではなくList
を使用することを推奨しています。
JPAの注意事項
EbeanはJPA仕様と同じマッピングを使用します。同じマッピングアノテーションを学習して使用できます。これは通常、仕様の良い部分であり、仕様のこの部分は時代を超えて耐えられると期待しています。
JPAには、一般的に不十分な側面がいくつかあります。
列挙型 | JPAにおける列挙型マッピングは不十分です。Ebeanは@DbEnumValue と@EnumValue の2つの優れた代替案を提供します。この問題の進行状況をJPA JIRAイシュートラッカーで監視しています。 |
---|---|
FetchType EAGER / LAZY |
JPAマッピングは、使用ケースごとにクエリを最適化しようとするEbeanのクエリアプローチに反して、FetchTypeEAGERとLAZYの使用を推奨します(およびアプリケーションのプロファイリングによる自動クエリチューニングを提供します)。 EAGER LAZYマッピングアノテーションの使用は、通常、Ebeanを使用する場合には有用ではありません。 |
@Sizeおよび@NotNull
Ebeanは、javax validation
アノテーション@Size
と@NotNull
の使用をサポートします。
@Size | マッピングされた列の幅を定義します。たとえば、@Size(50)は@Column(length=50)と同じです |
---|---|
@NotNull | マッピングされた列をNULL以外として定義します。@Column(nullable = false)または@ManyToOne(optional=false)と同じです。 |
現在の制限
Ebeanは現在サポートしていませんが、時間をかけてサポートしたいJPAマッピングが多数あります。これらは拡張機能リクエストとして記録されています。
116 |
単一テーブル継承のみがサポートされています。 JOINEDまたはTABLE PER CLASS継承ストラテジーのサポートは計画されていません。 |
1777 |
サポートされているのは 1 つのタイプあたりのコンバーターのみ JPA @Converter autoApply false は適用されません。つまり、1 つのタイプのマップが使用するすべてのプロパティに対してタイプは一貫性のあるものでなければならないという意味です。たとえば、1 つの Ebean データベースインスタンスで 2 つのコンバーターが Boolean を 2 つの異なる方法でマップすることはできません。 |
未解決のすべての問題と拡張機能の完全なリストは Github Issues で確認できます。
制約 タグが付けられた github の問題を参照してください。