Hiberate + Spring + Maven を使用して大規模な Web アプリケーションを実装しています。
アプリケーションは複数の Maven モジュールのグラフに分割されており、そのうちのいくつかは持続性があります。これらのモジュールは、親 Web アプリ内で Maven の依存関係として結合されます。いくつかのモジュールは、他のアプリでスタンドアロンで使用されます。
私は次の構造を持っています:
core-module コア サービスと持続性 API が含まれています。
social-module 独自のエンティティ (コメント、投票など) サービスと永続化 API を備えたスタンドアロン アプリケーションです。
social-integration これは、ソーシャル モジュールをコア アプリケーションに接着する必要があり、関係エンティティ、永続性、サービス、およびコントローラーを含みます。
webappこれは、コモンズ スプリング構成を備えた単なる war コンテナーであり、すべてのモジュールに依存しています。
Hibernate 継承を使用してコア クラス Project を拡張し、必要な関係を追加しようとしましたが、問題はほとんどなく、正しい実装ではないと思います。
@Entity
@Table(name = "project")
@Inheritance(strategy = InheritanceType.JOINED)
public class Project implements Serializable
{
.....
}
@Entity
@Table(name = "social_project")
@PrimaryKeyJoinColumn(name = "project_id", referencedColumnName = "id")
public class SocialProject extends Project
{
@OneToMany(mappedBy = "project", targetEntity = ProjectComment.class, cascade = CascadeType.ALL)
protected List<Comment> comments = new ArrayList<Comment>(0);
@OneToMany(mappedBy = "project", targetEntity = ProjectQuestion.class, cascade = CascadeType.ALL)
protected List<Question> questions = new ArrayList<Question>(0);
@OneToMany(mappedBy = "project", targetEntity = ProjectEvent.class, cascade = CascadeType.ALL)
protected List<Event> events = new ArrayList<Event>(0);
......
}
それで...コアアプリケーションを変更せずに、このモジュール間にきれいな関係を作成できますか?