2011-10-27 1 views
0

나는 최대 절전 모드에서 개체를 저장해야하는 프로젝트와 함께 작업하고 있으며 많은 사용자 정의 개체로 구성되어 있습니다. 나는 "ususal"유형 (int, String, etc ...) 만 포함하는 객체를 사용하여 최대 절전 모드 매핑을 사용하는 방법을 알고 있지만 사용자 정의 유형은 @embedded 및 UserType 구현과 같은 제안을 본 적이 있지만 ' 개체 안의 개체를 특정 테이블에 매핑하는 방법에 대한 제안을 보지 못했습니다. 참고 : 이러한 개체는 동일한 데이터베이스에있는 동일한 테이블에 없습니다. 내가하고 싶은 내 DaoImplementation에서이 기능을 할 수있는 매핑이 있습니다 :다른 DB에 매핑되는 사용자 정의 필드 유형으로 Hibernate를 사용하는 방법?

public class MyObject{ 

private String name; 

private ObjectA type;//Contains an int 

private ObjectC look;//Contains a String. 

private ObjectB[] children;//contains a string and other children. 

public MyObject(){} 

//Getters and setters omitted. 

} 

public class ObjectB{ 
private String name; 
private ObjectB[] children; 

public ObjectB(){} 
//Getters setters omitted 
} 

답변

1

개체의 내용을 별도의 테이블에 저장해야하는 경우이 개체는 다른 영구 엔터티 여야하며 개체간에 연관을 사용해야합니다. OneToMany, ManyToOne, OneToOne, ManyToMany는 카디널리티에 따라 다릅니다.

hibernate reference manual을 읽으십시오.

+0

나는 이것을 시도했지만 한가지 문제가있다. 아이가 부모를 저장하는 필드가 있어야합니까? 이 예제를 보자 : http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example/ 그것은 좋지만 문제는 스톡에는 여러 개의 StockDailyRecords가 있지만 StockDailyRecord에는 스톡이 있어야한다는 것이다. 들. 나에게보기 싫은 내 현재 프로젝트에서는 클래스에 필드를 추가 할 수 없습니다. 주위에 어떤 생각이 있니? 매뉴얼에서 아무도 보지 못했습니다. –

+0

자식 개체는 부모가있는 필드를 가질 필요가 없습니다. 물론 매핑 된 테이블에는 부모 ID가있는 열이 필요합니다. 부모 클래스에서 one-to-many 관계를 inverse로 지정하지 마십시오. – socha23

+0

@why_vincent : 원하는 것은 단방향 OneToMany 관계입니다. 그리고 매뉴얼에는 이러한 관계의 예가 있습니다. 주의 깊게 읽으십시오. –

0

당신은 클래스 ObjectB에 대한 일반 엔티티 매핑을 작성해야 :

public void store(MyObject o){ 
hibernateTemplate.saveOrUpdate(o); 
} 

이 내 객체의 모양을 부드러운이다 MyObject를 매핑하는 것과 같은 방법으로 MyObject를 원하는 테이블에 매핑하고 MyObject와 ObjectB 간의 일대 다 관계를 정의 할 수 있습니다. saveOrUpdate은 전달 된 객체와 모든 필드를 저장하므로 ObjectB의 배열도 저장됩니다.

ObjectA 또는 ObjectC의 경우 UserType을 구현하거나 @Embedded (MyObject 필드가있는 동일한 테이블에 필드를 포함하려는 경우)로 표시하거나 다른 테이블에 엔티티로 매핑 할 수 있습니다 (ObjectB의 경우와 마찬가지로).).

+0

그들은 동일한 테이블에 속하지 않기 때문에 UserType을 사용해야 할 것입니다. 그렇지만 좋은 찾고있는 최대 절전 모드 코드는 제 생각에 나빠 보이기 시작할 것이며 Spring/JDBC를 사용할 수도 있습니다. –

+0

같은 테이블에 속하지 않으면 UserType을 쓰는 데 어려움이 없으며 모든 개체를 다른 테이블에 엔티티로 매핑하고 관계를 지정하면 모든 것이 잘 작동합니다. – socha23

관련 문제