3

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);


  ......
}

それで...コアアプリケーションを変更せずに、このモジュール間にきれいな関係を作成できますか?

4

1 に答える 1

0

次のモジュールを使用して、アプリケーションの構造を変更できます。

social-model (or social-schema)
social-dao
social-ws (i.e. web services)
social-runtime (create result jar/war file)

モジュール間の依存関係:

dao depends from model module
ws depends from model and dao modules
runtime depends from all modules

ルート pom ですべてのモジュールを宣言します。ビルド中、Maven は依存関係を解決し、適切な順序でビルドを実行します。

root,model,dao,ws,runtime

たとえば、ws モジュールは、dao モジュールの xml Spring 構成ファイルを再利用します。ws モジュールの Spring 構成で import ディレクティブを使用するだけです。

于 2014-09-20T21:19:07.833 に答える