2011-11-29 2 views
10

주석을 사용하고 구성 파일을 최대 절전 모드로 선택해야합니까? 아니면 같은 프로젝트에서 동시에 두 가지 방법을 모두 사용할 수 있습니까?Hibernate에서 같은 프로젝트에서 어노테이션과 hbm.xml 파일을 모두 사용할 수 있습니까?

우리는 큰 프로젝트가 Hibernate 3.2.5와 POJOs가 .hbm.xml 파일들로 구성된 것을 가지고있다. 이 프로젝트는 Hibernate SessionManager Factory를 사용하며 JTA 기반이 아닌 EntityManager 팩토리를 사용합니다.

그런 식으로 구성된 POJO는 100 개가 넘으며 원래 개발자 팀은 주석으로 전환하기를 꺼립니다.

한편 우리는 Hibernate 주석으로 구성하고자하는 더 많은 POJO로 프로젝트를 확장해야하며 가능한 경우 최대 절전 모드를 유지하면서 JPA로 전환하지 않아야합니다.

일부 POJO에 대해 .hbm.xml 설정 파일을 조합하여 동시에 다른 사용자를 위해 주석을 사용할 수 있습니까?

+1

NetBeans와 같은 툴의 버그와 많은 경우에 이클립스를 감안할 때, 코드를 작성하고 올바르게 구성 할 때도 종종 오류가 발생합니다.그래서 많은 Java 전문가조차도 "몰라요, 시도하지 않았습니다"라고 말하면, 그것이 내 오류인지 또는 IDE인지, 또는 단순히 Java로 수행 할 수 없기 때문에 시간을 낭비하지 않을 것입니다./최대 절전 모드. – Skyhan

답변

7

마누가 답을 주었지만 주석으로 전환하려고하고 해당 hbm.xml을 주석으로 변환하려는 경우. 계속 해봐. pojo 클래스를 생성 할 도구를 기존 표의 주석과 함께 사용할 수 있습니다. 이러한 도구를 사용하더라도 다른 코드를 변경하지 않아도 이전처럼 pojos를 생성 할 수 있습니다. 즉 속성 이름을 변경하지 마십시오. 나는 같은 종류의 프로젝트에서 일했고 Ant 스크립트를 사용했다.

13

가능합니다.Documentation는 기존 hbm.xml 사용과 주석 접근 방식을 혼합 할 수

주 말한다. resource 요소는 hbm 파일이거나 EJB3 XML 배포 설명자 일 수 있습니다.

당신은 그러나 (주석 또는 hbm.xml을 통해 여부) 클래스를 여러 번 선언 할 수 없습니다 :

하지만 몇 가지 체크 포인트가 있습니다. 엔터티 계층 구조에서 구성 전략 (hbm vs annotations)을 함께 사용할 수 없습니다.

자세한 내용은 here을 참조하십시오.

0

이 게시물은 훌륭하지만 실제 코드 예제를 사용하면 더 좋아질 것입니다. ManuPK 심판을 시험해 보았습니다.
내 실제 심판은 여기에 있습니다 : http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html#setup-configuration

//typical way to use cfg.xml 
Configuration cfg = new Configuration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

//to use both annotation & cfg.xml mappings, use AnnotationConfiguration instead of Configuration 
AnnotationConfiguration cfg = new AnnotationConfiguration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

AnnotationConfiguration 모두 < 매핑 자원 = "your_entity.hbm.xml"을 구문 분석하는 데 평소처럼 cfg.xml을 읽습니다/> 및 < 매핑 클래스 = "내. entity.objclass "/ >

면책 조항 : 이전 Hibernate 버전 3.2.1을 사용해 보았지만 정상적으로 실행 중입니다.

관련 문제