JPA 2.0をjpa-providerとしてhibernateとともに使用しています。私のプロジェクトの方向性は、DAOのJPA実装を中立に保つことです。だから、私は休止状態のセッションオブジェクトまたは休止状態に特有のものを使用できません。私たちは、検索のかなりの数が多いと、これらの参照値は、私は彼らが主に期間例えば、一定のまま意味それによる定期的なことになっている、我々は持っていると言う、私は基本ルックアップクラスを設計しているjpa 2.0永続性:ジレンマの作成と更新
Currency code --> Drachma
Description --> Greece
From date --> 01-Jan-1960
To date --> 01-Nov-2005 (this is just an example)
Currency code --> Euro
Description --> Greece
From date --> 02-Nov-2005
To date --> null (null indicates until today)
通貨ルックアップテーブルすべての検索
@MappedSuperclass
public abstract class BaseLookupEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "code", nullable = false)
private String code;
@Column(name = "description", nullable = false)
private String description;
@Column(name = "from_date", nullable = false)
@Temporal(TemporalType.DATE)
private Date fromDate;
@Column(name = "to_date")
@Temporal(TemporalType.DATE)
private Date toDate;
// getters and setters
のために、このようになります。そのジレンマは、それぞれの作成のためのサービス層は、無アイデンティティフィールドでクライアントからの新しいインスタンスを受け取ることを考えると
またはn個が含まれているエンティティの更新です成功のこれらの値が存在するかどうかを確認するために、これらのルックアップテーブルをすべて明示的に照会する必要があります。存在し、更新が必要な場合は、to_dateカラムを更新してから新しいルックアップエントリを作成します。
私はこのDIYロジックを行う必要があるのですか、それとも、JPAには私の努力を最小限に抑えるための仕組みがありますか?
乾杯。
ありがとうございました。それは助けになった – JProgrammer