2014-09-15 2 views
0

employeesdata의 두 프로젝트가 있습니다. 프로젝트는 내 DB에 연결된 엔티티를 나타냅니다.Maven 2 프로젝트가 서로 의존합니다.

각 직원은 테이블에 연결된 필드가 data이므로 내 employee pom.xml에는 데이터에 대한 종속성이 있습니다. 내 문제는 여기에 있으며 모든 데이터가 직원에 의해 삽입되므로 dataemployees에 종속됩니다. 이로 인해 양방향 종속성이 발생합니다.

메이븐에서도 가능합니까? 이것이 문제가 될 수 있다는 것을 이해합니다.

프로젝트 employees

@Entity 
@Table(name="employees", uniqueConstraints= { 
     @UniqueConstraint(columnNames="idEmployees"), 
     @UniqueConstraint(columnNames="idCardNumber"), 
     @UniqueConstraint(columnNames="niNumber") 
}) 
public class Employee { 

@Id 
@GeneratedValue 
@Column(unique=true, nullable=false, updatable=false) 
private int idEmployees; 

//other class variables 

@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY) 
@JoinColumn(name="niCategoryId", nullable=false, updatable=false) 
private NIData niCategory; 

//constructors getter and setters 
} 

data 프로젝트

@Entity 
@Table(name="nidata", uniqueConstraints= { 
     @UniqueConstraint(columnNames="idNiData") 
}) 
public class NIData { 

@Id 
@GeneratedValue 
@Column(unique=true, nullable=false, updatable=false) 
private int idNiData; 

//other class variables 

@ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY) 
@JoinColumn(name="createdEmployeeId", nullable=false, updatable=false) 
private Employee createdEmployee; 

//constructors getter and setters 
} 

당신은 그들이 서로에 의존하지만 다른 스키마에 속하는 나는 다른 프로젝트에서 원하는 볼 수 있듯이. 또한 내가 설계하고있는 시스템의 모든 부분에 노출하고 싶지는 않을 수도있는 다른 스키마를 추가 할 계획이지만 그 중 일부만 공개 할 계획입니다.

+0

하나 또는 둘 다 의존 할 수있는 API 프로젝트가 있어야한다고 생각합니다. –

답변

1

모든 엔티티 관련 클래스를 단일 Maven 모듈에 넣는 것이 훨씬 더 합리적 일 것입니다. 이런 식으로 모든 클래스는 서로 의존 할 수 있습니다. 또한 모든 유지 된 클래스를 하나의 프로젝트에서 유지 관리 할 수 ​​있습니다.

실제로 Maven은 어떤 모듈을 먼저 빌드할지 모르기 때문에 순환 의존성을 허용하지 않습니다.

+0

2 가지 이유로 구분하고 싶습니다. 1) 서로 다른 스키마가 있습니다 2) 결국 스키마를 더 추가 할 것이므로 코드의 특정 부분에 해당 스키마의 일부를 제공하고 싶습니다. 모든 것을 모든 곳에서 사용할 수 있기를 원하지 않습니다. 이런 이유로 저는 다른 프로젝트를 사용하고 있습니다. –

+0

데이터 모델에 대해서는 잘 모릅니다.하지만 데이터베이스 스키마가 다르더라도 하나의 모듈에 두는 것이 더 논리적 일 것입니다. 두 번째 이유에 관해서는, Maven에서 모듈의 "하위 패키지"를 생성하는 방법이 있다고 생각합니다. 따라서 프로젝트가 엔티티의 하위 집합에만 의존하는 경우 하나의 모듈에 모든 항목이 있어도 프로젝트를 수행 할 수 있습니다. 프로파일과 [병 아티팩트에서 컨텐츠를 제외하는 방법] (http://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html)에 대한 내용을 읽을 수 있습니다. – manouti

+1

나는 당신이 옳다고 생각하는데, 그들은 하나의 영속성 단위 (persistence unit) 아래 동일한 프로젝트에서 그들을 갖는 것이 낫다. 다른 사람을 폭로해야 할 필요가있을 때 서로에게 의존하면 오류가 발생할 수 있습니다. 고맙습니다! –

관련 문제