문제

나는 현재 Hibernate Tools 3.1을 사용하고 있습니다.명명 규칙과 DAO 템플릿을 사용자 정의했습니다.데이터베이스(SQL Server 2005)는 초기 개발 단계에 있으며 매핑, 엔터티, DAO, 구성 등의 재구축을 담당하고 있습니다.테이블을 리버스 엔지니어링해야 할 때마다 매핑(*.hbm.xml 파일)에 대한 모든 사용자 정의가 손실됩니다. 신원 열, 사용된 필드 선택 같음 그리고 toString.나는 diff XML을 파일에 작성하고 이를 생성된 매핑에 "병합"하는 것을 고려하고 있었습니다(참조: 내 관련 질문) 그런데 궁금했는데...이러한 짜증나고 피할 수 없는 중요한 작업을 처리하기 위한 모범 사례/도구가 있습니까?

도움이 되었습니까?

해결책

지속적인 리버스 엔지니어링을 강력히 권장합니다.리버스 엔지니어링은 훌륭한 일회성 작업이지만 변경 사항은 hbm과 데이터베이스 모두에 대한 변경 사항으로 관리되어야 합니다.

우리는 마이그레이션을 사용하여 db 변경 사항을 관리하고 관련 변경 사항을 hbm에 포함합니다.Hibernate에 그것이 있다면(내 생각에는 그렇습니다) 당신은 hbm 대신에 주석을 살펴보고 싶을 수도 있습니다. 주석은 유지하기가 꽤 쉬울 수 있습니다.

다른 팁

2년 반 늦었지만 반대 의견을 제시하겠습니다.hibernate.reveng.xml 파일 또는 사용자 정의 ReverseEngineeringStrategy를 통해 매핑 파일에 필요한 사용자 정의를 수행할 수 있어야 합니다.클래스 자체의 경우 항상 기본 클래스를 생성하고 사용자 정의 코드가 포함된 클래스로 확장해야 합니다.

예를 들어, com.company.vo.generated.CustomerGenerated를 생성하고 com.company.vo.custom.Customer로 확장합니다.코드 생성은 생성된 패키지의 모든 클래스를 덮어써야 하지만 사용자 정의 패키지에서는 덮어쓰지 않아야 합니다(물론 Hibernate 도구가 대상 디렉토리에 이러한 사용자 정의 클래스를 생성하도록 하여 필요에 따라 사용자 정의 디렉토리에 공백을 복사하여 붙여넣을 수 있음에도 불구하고).이렇게 하면 사용자 정의 클래스에서 같음, toString 등에 대한 메서드를 재정의할 수 있으며 다시 생성할 때 변경 사항이 손실되지 않습니다.또한 가장 좋은 방법은 생성된 코드를 SCM에 체크인하지 않는 것입니다.

이 사이트에는 Maven, Hibernate3 플러그인 및 빌드 도우미 플러그인을 사용하여 이를 달성하는 방법에 대한 몇 가지 훌륭한 예가 있습니다.이들 중 대부분은 Pascal Thivent의 매우 유용한 답변을 제공합니다.이 방법은 나에게 매우 효과적이며, 약간의 학습 곡선이 있지만 단일 Maven 명령을 사용하여 데이터베이스 변경 사항을 앱에 전파할 수 있다는 것은 놀라운 일입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top