Hibernate hbm xml 파일 & 엔티티 클래스를 기존 DB 스키마에서 어떻게 생성 할 수 있습니까?기존 DB 스키마에서 Hibernate hbm xml 파일 및 엔티티 클래스 생성
답변
당신은이에 대한 최대 절전 모드 리버스 엔지니어링 도구를 사용해야합니다 추천 할 것입니다. 자세한 내용은 hibernate reverse engineering tools documentation을 참조하십시오.
JPA 어노테이션이 적용된 클래스를 생성하는 방법은 분명하지 않지만 어노테이션을 선호하는 새로운 프로젝트 인 경우 더 이상 hbm.xml 파일을 사용하지 말아야한다고 생각할 수 있습니다.
저는 Hibernate Tools (사이트에서 제공 한 예제)를 매우 즐겁게 사용했습니다. 아래에서는 필자의 구체적이고 진보적이며 흥미로운 (내가 생각하는) 사용 사례에 대해 자세히 설명합니다.
사실, 나는 우리의 큰 프로젝트에 흥미로운 도전에 직면했다
- 새로운 테이블이 도착 했을까 (데이터베이스 기반 팀 800 테이블에 접근), 그래서 (데이터베이스 에서 그들을 생성 할 수 HibernateTools를 사용하고 Annotated Entities 생성하기) (실제로 다른 프로세스를 사용 중입니다 ...)
그러나 mosts 테이블은 새 것이 아니며 이미 java 구현과 .hbm.xml을가집니다. 둘 다 가끔 원래 생성 된 DB에서 수정되었으므로 아무 것도 손상시키지 않는 보증을 통해 다시 생성 할 수 없었습니다. 엔티티를 가능한 한 적게 (즉, 어노테이션 만) 변경해야했습니다! 우리의 전형적인 옛 실체는 약 100 회원 가지고 있기 때문에
이은 빠르고도 할 필요가 (자신의 DB를 열 플러스 역 외래 키에서 오는 엔티티의 컬렉션을!).
참고 : 두 개체를 생성 된 전체 생성자로 컴파일 할 수 없으므로 256 개의 매개 변수 제한이 깨졌습니다. 그러나이 생성자는 어쨌든 쓸모가 없었지만 256 개 매개 변수의 순서를 기억할 수 있었으므로 삭제했습니다.
- 또한 내 세트를 일반 세트로 마이그레이션하려고했습니다. (지금까지는 신경 쓰지 않았던 설정자를 제외하고). 의 .hbm.xml 파일이었다
정보의 출처 : 매핑 마이그레이션을위한
, 나는 다음과 같이 (필요한 템플릿 코드로 사용자 정의) 최대 절전 모드 도구를 사용 hibernate.cfg.xml 파일
생성 된 출력은 X2.java 파일 (X.필드 만, getter와 주석 (아무 세터 또는 생성자) (일반 설정)
참고 : 먼저 hibernate.cfg.xml을 추출하여 목록을 포함하는 스프링 빈을 대체해야했습니다. 그러나 이것은 Squirrel과 같은 DB 도구에도 유용했기 때문에 HQL 완성을 가능하게 할 수있었습니다 ...
I가 이클립스 컴파일러 (오류 "중복 ...")를 사용하는 것을 포함하는 동일한 패키지에 자바 클래스) 실수를 줄이기 위해 실수를 줄이기 위해 편집 작업을 다시 한 번 확인해보십시오 (실수는 옵션이 아니 었습니다. 제작에 많은 고객이 있습니다!). 각 마이그레이션 클래스에 대해, 나는 기존의 클래스에 생성 복사 할 다음 .hbm.xml
- 변경 persistence.cfg.xml
- 기존 필드 다음에있는 모든 Set 필드를 잘라내어 붙여 넣기 만하면 컴파일 오류가있는 기존 필드 만 삭제합니다 (결과적으로 일반 세트가있는 필드가 생겼습니다).
- 모든 getter를 잘라내어 붙여 넣습니다. 클래스) 기존의 setter 후에
- public dy 만 보여주는 개요보기를 엽니 다. 알파벳 순으로 정렬 된 음표 방법
- 오류가없는 각 게터를 검사합니다 (잘못된 것이 있는지 또는 그로부터 떨어 졌는지 조사 ...)
- 오류가있는 메서드 만 고려하여 각 게터를 검사합니다. 메서드의 두 번째 인스턴스를 삭제하고 주석을 첫 번째 인스턴스 (개요보기를 사용한 탐색)로 복사합니다 (클래스의 메서드 순서는 그대로 유지되며 CVS 기록에서 중요합니다. , 특히 이주가 코드를 깨뜨리지 않았다는 것을 불신자에게 증명할 때, 그것은 이미 이전에 깨졌습니다!). ... 추가 논의를 위해 왼쪽으로 몇 가지 세부 ... 호기심에 대한
, 우리는 200 개 주석 기관 :-) 가까이에있어이 달. 일반적인 100 개의 필드 엔티티가 마이그레이션하는 데 약 30 분의 작업이 필요합니다. 남아있는 600 개의 엔티티에 대해이 cut'n 붙여 넣기를 완료하는 데 300 시간 밖에 남지 않았습니다! ;-)
"참고 : 두 엔티티는 생성 된 전체 생성자로 컴파일 할 수 없으며 256 개의 매개 변수 제한을 초과했습니다! 그러나이 생성자는 아무리해도 쓸모가 없었지만 256 개 매개 변수의 순서를 기억할 수있어 삭제했습니다." - 어떻게? 빌드 후 삭제 했습니까? 전체 생성자를 생성해서는 안된다는 것을 hbm에서 지정하는 방법을 알고 있습니까? – WhyGeeEx
Netbeans에는 설정 파일, 주석이 달린 파일 등을 생성하는 기능이 있습니다.
링크가 손상된 것 같습니다. 관련성이있는 링크를 찾았지만 어느 것이 가장 좋을지 잘 모르겠습니다. 다시 찾아서 깨진 링크를 고칠 수 있습니까? 감사합니다 – ForceMagic