Object中的表现形式
一对多与多对一
Department Employee
long id long id
String name String name
set<Employee> employees Department department
多对多
Employee Role
long id long id
String name String name
Set<Role> roles Set<Employee> employee
一对一
Employee User
long id long id
String name String name
User user Employee employee
Relation中的表现形式
table_department
id
name
table_employee
id
name
departmentId
userId
table_employee_role
employeeId
roleId
table_role
id
name
table_user
id
name
Mapping中的表现形式
Department.hbm.xml
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<set name="employees">
<key column="departmentId"></key>
<one-to-many class="Employee"/>
</set>
Employee.hbm.xml
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<many-to-one name="department" class="Department" column="departmentId"></many-to-one>
<set name="roles" table="table_employee_role">
<key column="employeeId"/>
<many-to-many class="Role" column="roleId"/>
</set>
<one-to-one name="user"/>
Roles.hbm.xml
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<set name="employees" table="itcast_employee_role">
<key column="roleId"/>
<many-to-many class="Employee" column="employeeId"/>
</set>
User.hbm.xml
<id name="id">
<generator class="foreign">
<param name="property">employee</param>
</generator>
</id>
<property name="name"></property>
<one-to-one name="employee" constrained="true"/>