2012-04-04 4 views
6

오늘은 Hibernate를 ORM으로 사용하여 애플리케이션을 만들려고했다. 그래서 창조하는 동안 나는 의심을 품었다. Hibernate 매핑 파일 (.hbm 파일) 또는 주석을 사용하는 가장 좋은 방법은 무엇입니까? 그것의 장단점은 무엇입니까? 이해를 도와주세요.Hibernate 매핑 파일과 어노테이션의 차이

답변

12
  • 기능상의 차이는 없습니다.
  • Java에 주석이 추가되기 전에 (1.5로 추가 된) xml 파일이 사용 되었기 때문에 오래된 매핑 방법으로 간주 될 수 있습니다.
  • 일반적으로 JPA 주석을 사용하는 것이 더 좋습니다 최대 절전 모드보다는 오히려 최대 절전 모드입니다.

    http://en.wikipedia.org/wiki/Convention_over_configuration 
    

    xml 파일이있는 동안 단지 구성 : - XML을 사용하는 경우 하나의

+4

XML 파일은 구식이 아닙니다. 새로운 것이 반드시 좋은 것은 아닙니다. – Johanna

+1

"그들은 고려 될 수 있습니다". 나는 그들이 있다고 주장하지 않았다. 나는 또한 기능적 차이가 없다고 언급했다. 그러나 주석이 많은 경우에 바람직합니다. – Bozho

0

주석 설정보다 관례의 원칙을 기반으로 네이티브 최대 절전 모드로 선호해야 JPA의 XML 형식이있다.

주석을 사용하는 것과 구성을 사용하는 것에 대해 많은 논의가 있습니다. 이 쓰기와 더 쉽게 유지 관리 할 수 ​​있기 때문에 내 관점에서

stackoverflow link

, 나는 주석을 선호합니다.

+1

구성에 대한 관례에 기반한 주석을 정중하게 반대해야합니다. 주석은 관례에 관한 것이 아닙니다. 이는 단순히 XML을 구성하는 다른 방법입니다. – M7Jacks

4

XML 접근법을 사용하는 좋은 사례 중 하나는 다른 유틸리티에서 생성되어 주석을 달 수없는 객체를 지속하는 경우입니다.

그 외에도 주석을 사용하는 것은 깨끗한 구현에 도움이되기 때문에 속성 이름의 철자를 잘못 입력하면 버그가 발생할 가능성이 적기 때문입니다.

+0

외부 소스에서 개체의 지속성을 언급 해 주셔서 감사합니다. –

8

질문은 귀하의 취향입니다 - 두 가지 방법 (대부분) 동일하게 할 수있는 차이점은 작성하는 방법입니다.

주석을 사용하면 Java 멤버 변수/getter가 있으며 한 곳에서 직접 매핑 할 수 있습니다.

Xml 매핑 파일은 테이블과 매핑에 대한 더 나은 개요를 제공합니다.

내 생각에 XML 매핑 파일은 데이터베이스와 응용 프로그램의 더 나은 디자인에 도움이됩니다. 주석은 잘못된 방향 인 Java 클래스 -> 매핑 -> 데이터베이스 테이블을 강제로 지정하는 경향이 있습니다 (데이터베이스는 항상 먼저 설계해야합니다 - 나중에 데이터베이스 테이블을 변경하는 것은 많은 노력입니다 - 대부분의 성능 누출은 나쁜 데이터베이스 디자인에 있습니다) Java 클래스는 언제든지 쉽게 변경할 수 있습니다.)

xml 파일의 한 가지 기능상의 이점 : 구조적 차이가있는 다른 데이터베이스 (예 : Oracle 데이터베이스와 MySQL 데이터베이스)가 다른 경우 테이블 이름과 데이터 형식이 약간 다를 수 있으며 응용 프로그램을 하나의 데이터베이스에서 이식하는 경우 다른 파일에 새로운 매핑 파일을 작성하기 만하면됩니다. Java 코드의 한 행을 변경할 필요가 없습니다. 특수 효과는 사용할 수 없습니다.

나는 XML 매핑 파일을 선호한다. 그게 맛입니다.은 "자습서 포인트"말한다 방법

2

이입니다

"당신이 휴대용 다른 EJB 3을 준수 ORM 응용 프로그램에 응용 프로그램을 만들려고하면 매핑 정보하지만 여전히 경우를 표현하기 위해 주석을 사용해야합니다 당신은 더 큰 유연성을 원한다면 XML 기반 매핑을 사용해야한다. "

나는 XML 설정 파일보다 주석을 선호한다. 왜냐하면 최소한의 코드 변경으로 변경 작업을 수행 할 수 있기 때문입니다.

-1

주석은 Java 언어와 자바 개발자가 XML로 비교할 때 쉽게 배울 수 있습니다. 그리고 실시간 테이블 이름과 컬럼 이름의 또 다른 포인트는 99 %로 고정되어 있으므로 Java 코드도 변경하지 않아도됩니다. 테이블 이름과 컬럼 이름을 자주 변경하려는 경우 finally cfg.xml 파일이 있습니다. 데이터베이스가 변경 될 수 있기 때문에 manadatary.

+0

안녕하세요, StackOverflow에 오신 것을 환영합니다. 질문을 이해하는 것이 정말 어렵습니다. 코드 예제 또는 다른 힌트를 추가하여 개선 할 수 있습니까? –