Whiteship's Note

Using placeholders

Hibernate/Chapter 3 : 2008. 1. 13. 11:57


  • you can call any native SQL function or keyword your database system supports.
  • The disadvantage of putting native SQL in your mapping metadata is lost database portability.
  • One way to deal with this issue is to use a placeholder in your XML file that is replaced during build when the mapping files are copied to the target directory.


<id name="id" column="CATEGORY_ID" type="long">
<generator class="&idgenerator;"/>
  • &idgenerator; 값을 Entity placeholder라고 부른다. 이 값을 XML 파일의 상단에 문서 타입 정의의 일부분으로 선언할 수 있다.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
<!ENTITY idgenerator "auction.custom.MyOracleGenerator">
  • 맵핑 파일을 읽어들일 때, XML 파서는 placeholder를 위에 선언한 값으로 대체한다.
  • 선언 부분을 별도의 DTD 파일로 한 단계 더 빼낼 수 있고, 원래 자리에는 dtd 파일을 참조하도록 global 옵션을 사용할 수 있다.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
<!ENTITY % globals SYSTEM "classpath://persistence/globals.dtd">
  • 모든 전역적인 옵션을 DTD 파일로 빼낼 수 있다.
  • 다수의 속성이 여러 클래스에 중복되서 나타나지만, 상속을 사용할 수 없을 때는 XML 덩어리를 별도의 파일로 빼내서 다른 XMl 파일들에 포함 시킬 수도 있다.

'Hibernate > Chapter 3' 카테고리의 다른 글

Hibernate Core와 Java Persistence and EJB 3.0  (0) 2008.01.20
XML 도메인 모델  (0) 2008.01.13
Map 도메인 모델  (0) 2008.01.13
Entity 표현 대안  (0) 2008.01.13
Using placeholders  (0) 2008.01.13
Global annotation metadata  (0) 2008.01.13
Global XML mapping metadata  (0) 2008.01.13
Handling global metadata  (0) 2008.01.13
XDoclet 사용하기 - 하이버네이트 맵핑  (0) 2008.01.11
애노테이션 사용하기 - 하이버네이트 맵핑  (0) 2008.01.11
XML 사용하기 - 하이버네이트 맵핑  (0) 2008.01.11

Write a comment.