상속계층의 표현

상속계층에 있는 클래스를 다음과 같이 클래스 별로 Table을 등록

public class Item {
 private int itemNumber;
 private String itemName;
 ….
}

public class LargeItem extends Item {
 private Vector middleItemList;
 …
}

<hibernate-mapping package=”net.maxoft.session.beans”>
  <class name=”Item” table=”CategoryItem”>
      <id name=”itemNumber” column=”Id”  unsaved-value=”null”>
          <generator class=”increment”/>
      </id>    
      <property name=”itemName” column=”CategoryName”/>  
     
      <joined-subclass name=”LargeItem” table=”LargeCategory”>
          <key column=”Id”/>         
          <bag name=”middleItemList”>
              <key column=”parentItem”/>
              <one-to-many class=”MiddleItem”/>
          </bag>             
      </joined-subclass>
  </class>
</hibernate-mapping>

단방향 One-to-One 관계의 표현

두개의 User, AccessRight의 java클래스가 단방향 1:1 관계를 이룰때

class User {
   int user;
   AccessRight right;
   ….
  
}

class AccessRight {
   int rightId;
   …
}

User와 AccessRight의 매핑파일은 아래와 같다.

——————— User.hbm.xml ———————-
<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC
 “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
 “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd“>
<hibernate-mapping package=”dev.struts3.model” default-lazy=”false”>
  <class name=”User”>
   <id name=”user” type=”int”  unsaved-value=”null”>
    <generator class=”increment”/>
   </id>
   …  
  <many-to-one name=”right”
              column=”rightId”                     
     class=”AccessRight”
     not-null=”true”/>
  </class>
</hibernate-mapping>

——————— AccessRight.hbm.xml ———————-
<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC
 “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
 “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd“>
<hibernate-mapping package=”dev.struts3.model” default-lazy=”false”>
   <class name=”AccessRight”> 
   <id name=”rightId” type=”int” unsaved-value=”null”>
     <generator class=”increment”/>
   </id>  
   …..
   </class> 
</hibernate-mapping>

User.hbm.xml에 다음절에 의해 User테이블에 rightId가 필드가 AccessRight의 rightId를 외래키로 지정된다.
<many-to-one name=”right” column=”rightId”  class=”AccessRight”  not-null=”true”/>