도구셋 안내
Hibernate에 대한 라운드트립 엔지니어링은 Eclipse 플러그인 세트, 명령라인 도구들, 뿐만 아니라 Ant 태스크들을 사용하여 가능하다.
Hibernate 도구들은 현재 기존 데이터베이스들에 대한 리버스 엔지니어링을 위해 Ant 태스크들 뿐만 아니라
Eclipse IDE용 플러그인들을 포함하고 있다:
매핑 편집기: 자동 완성 기능과 구문 강조를 지원하는 Hibernate XML 매핑 파일들에 대한 편집기. 그것은 또한
통상의 XML 편집기 보다 훨씬 더 융통성 있게 만들어서 클래스 이름들과 프로퍼티/필드 이름들에 대한 의미론적 자동 완성 기능을 지원한다.
콘솔: 콘솔은 Eclipse에서 새로운 뷰이다. 당신의 콘솔 구성들에 대한 tree overview에 덧붙여, 당신은 또한
당신의 영속 클래스들과 그것들의 관계들에 대한 상호작용 뷰를 얻는다. 콘솔은 당신의 데이터베이스에 대해 HQL 질의들을 실행하고 그 결과를
Eclipse 내에서 직접 브라우징 하도록 당신에게 허용해준다.
개발 마법사들: 몇몇 마법사들이 Hibernate Eclipse 도구들에 제공된다; 당신은 Hibernate 구성
(cfg.xml) 파일들을 빠르게 생성시키는데 마법사를 사용하거나, 심지어 당신은 기존 데이터베이스 스키마를 POJO 소스 파일들과
Hibernate 매핑 파일들로 완전하게 리버스 엔지니어링할 수도 있다. 리버스 엔지니어링 마법사는 맞춤 가능한 템플릿들을 제공한다.
Ant 태스크들:
추가 정보는 Hibernate Tools 패키지와 그것의 문서를 참조하길 바란다.
하지만 Hibernate 메인 패키지는 통합 도구에 번들화 되어 있다(그것은 심지어 플라이 상에서 Hibernate "내에서" 사용될 수 있다):
SchemaExport 별칭은 hbm2ddl.
자동적인 스키마 생성
DDL은 Hibernate 유틸리티에 의해 당신의 매핑 파일들로부터 생성될 수 있다. 생성된 스키마는 엔티티 테이블과 콜렉션 테이블에 대한
참조 무결성 컨스트레인트들(프라이머리 키와 foreign 키들)을 포함한다. 테이블들과 시퀀스들은 또한 페칭된 식별자 생성기들에 대해
생성된다.
DDL이 매우 벤더에 특정하므로, 이 도구를 사용할 때 당신은 hibernate.dialect 프로퍼티를 통해 한 개의 SQL
Dialect를 지정해야 한다.
먼저 생성된 스키마를 개선시키기 위해 당신의 매핑 파일들을 맞춤화 시켜라.
스키마 맞춤화 시키기
많은 Hibernate 매핑 요소들은 length로 명명된 옵션 속성을 정의한다. 당신은 이 속성으로 컬럼의 길이를
설정할 수 있다.(또는 numeric/decimal 데이터 타입들, 배정도에 대해 ).
몇몇 태그들은 또한 (테이블 컬럼들에 대한 NOT NULL 컨스트레인트를 생성시키는) not-null
속성과 (테이블 컬럼들에 대한 UNIQUE 컨스트레인트를 생성시키는) unique 속성을 수용한다.
몇몇 태그들은 그 컬럼에 대한 인덱스의 이름을 지정하는 index 속성을 허용한다. unique-key
속성은 하나의 단위 키 컨스트레인트로 컬럼들을 그룹지우는데 사용될 수 있다. 현재 unique-key 속성의
지정된 값은 컨스트레인트를 명명하는데 사용되지 않고, 오직 매핑 파일 내에서 컬럼들을 그룹 지우는데
사용된다.
예제들:
]]>
다른 방법으로, 이들 요소들은 또한 자식 <column> 요소를 수용한다. 이것은 다중 컬럼 타입들에
특히 유용하다:
]]>
]]>
sql-type 속성은 SQL 데이터타입에 대한 Hibernate 타입의 디폴트 매핑을 오버라이드 시키는 것을
사용자에게 허용해준다.
check 속성은 check 컨스트레인트를 지정하는 것을 당신에게 허용해준다.
]]>
...
]]>
요약
속성
값들
해석
length
number
컬럼 길이/decimal 배정도
not-null
true|false
컬럼이 null이 아니어야 함을 지정한다
unique
true|false
컬럼이 하나의 유일 컨스트레인트를 가져야함을 지정한다
index
index_name
(다중-컬럼) 인덱스의 이름을 지정한다
unique-key
unique_key_name
다중-컬럼 유일 컨스트레인트의 이름을 지정한다
foreign-key
foreign_key_name
하나의 연관에 대해 생성된 foreign key 컨스트레인트의 이름을 지정하고,
<one-to-one>, <many-to-one>, <key>, and <many-to-many>
매핑 요소들 상에 그것을 사용한다. inverse="true" 측들은
SchemaExport에 의해 고려되지 않을 것임을 노트하라.
sql-type
column_type
디폴트 컬럼 타입을 오버라이드 시킨다
(<column> 요소의 속성에만)
check
SQL expression
컬럼 또는 테이블에 대한 SQL check 컨스트레인트를 생성시킨다
<comment> 요소는 생성된 스키마에 대한 주석들을 지정하는 것을 당신에게 허용해준다.
Current customers only
...
]]>
Balance in USD
]]>
이것은 (지원되는 경우) 생성된 DDL에서 comment on table 또는
comment on column 문장으로 귀결된다.
도구 실행하기
SchemaExport 도구는 DDL 스크립트를 표준 출력으로 기록 하고/하거나 DDL 문장들을 실행시킨다.
java -cp hibernate_classpaths
org.hibernate.tool.hbm2ddl.SchemaExport options mapping_files
SchemaExport 명령 라인 옵션들
옵션
설명
--quiet
스크립트를 표준출력으로 출력하지 않는다
--drop
오직 테이블들을 드롭시킨다
--text
데이터베이스로 내보내기 하지 않는다
--output=my_schema.ddl
ddl 스크립트를 파일로 출력한다
--config=hibernate.cfg.xml
XML 파일로부터 Hibernate 구성을 읽어들인다
--properties=hibernate.properties
파일로부터 데이터베이스 프로퍼티들을 읽어들인다
--format
생성된 SQL을 스크립트 내에 좋게 형식지운다
--delimiter=x
스크립트를 위한 라인 경계의 끝을 설정한다
당신은 당신의 어플리케이션 내에 SchemaExport를 삽입시킬 수도 있다:
프로퍼티들
데이터베이스 프로퍼티들은 다음과 같이 지정될 수 있다
-D<property>를 가진 시스템 프로퍼티로서
hibernate.properties 내에서
--properties를 가진 명명된 프로퍼티들 내에서
필요한 프로퍼티들은 다음과 같다:
SchemaExport 커넥션 프로퍼티들
프로퍼티 이름
설명
hibernate.connection.driver_class
jdbc 드라이버 클래스
hibernate.connection.url
jdbc url
hibernate.connection.username
데이터베이스 사용자
hibernate.connection.password
사용자 패스워드
hibernate.dialect
dialect
Ant 사용하기
당신은 당신의 Ant 빌드 스크립트에서 SchemaExport를 호출할 수 있다:
]]>
점증하는 스키마 업데이트들
SchemaUpdate 도구는 "점증하는" 변경들을 가진 기존 스키마를 변경시킬 것이다. SchemaUpdate는
JDBC 메타데이터 API에 무겁게 의존하여서, 그것은 모든 JDBC 드라이버들에 동작하지 않을 것임을 주목하라.
java -cp hibernate_classpaths
org.hibernate.tool.hbm2ddl.SchemaUpdate options mapping_files
SchemaUpdate 명령 라인 옵션들
옵션
설명
--quiet
스크립트를 표준출력으로 출력하지 않는다
--properties=hibernate.properties
파일로부터 데이터베이스 프로퍼티들을 읽어 들인다
당신은 당신의 어플리케이션 내에 SchemaUpdate를 삽입시킬 수 있다:
점증하는 스키마 업데이트들에 Ant 사용하기
당신은 Ant 스크립트에서SchemaUpdate를 호출할 수 있다:
]]>