2013-10-24 55 views
3

我们使用Hiberate + Spring + Maven来实现大型Web应用程序。多模块休眠应用程序

该应用程序已分区为多个Maven模块的图形,其中一些模块具有持久性。这些模块被合并为父级Web应用程序中的Maven依赖项。并且其他几个模块在其他应用程序中独立使用。

我有以下结构:

核心模块 包含核心服务和持久性API。

社交模块 这是一个独立的应用程序,它有自己的实体(例如Comment,Poll等)服务和持久性api。

社交整合 这应该是社交模块与核心应用程序的粘合,并且包含关系实体,持久性,服务和控制器。

webapp它只是一个具有commons弹簧配置的战争容器,取决于所有模块。

我尝试使用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); 


    ...... 
} 

因此......我可以在不改变核心应用程序的情况下创建这些模块之间的干净关系吗?模块之间

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

依赖关系:

回答

0

可以使用未来的模块更改应用程序的结构,根POM

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

声明所有模块。在构建Maven会解决依赖关系和以正确的顺序进行编译:

root,model,dao,ws,runtime 

而且例如WS模块将从DAO模块复用XML Spring配置文件。只需在ws模块的Spring配置中使用import指令即可。