1、【1:1共享主键】关联关系的搭建:
1.在库表间搭建:(外键)
create table t_person35(
id number(5) primary key,
name varchar2(20),
age number(3)
);
create table t_passport35(
id number(5) primary key references t_person35(id),
expire number(2),
note varchar2(20)
);
2.在实体间搭建:(关系属性)

*映射1:1【共享主键】关联关系:
<!-- 1:1共享主键 -->
<class name="Person" table="t_person35">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="java.lang.String"></property>
<property name="age" column="age" type="java.lang.Integer"></property>

<one-to-one name="passport" class="Passport" cascade="save-update"></one-to-one>
</class>

<class name="Passport" table="t_passport35">
<id name="id" column="id" type="java.lang.Integer">

<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="note" type="java.lang.String"></property>
<property name="expire" type="java.lang.Integer"></property>

<one-to-one name="person" class="Person" cascade="save-update" constrained="true">
</one-to-one>
</class>







2.【1:1唯一外键】关联关系映射
*搭建关联关系
create table t_student35(
id number(5) primary key,
name varchar2(20),
age number(3)
);
create table t_computer35(
id number(5) primary key ,
brand varchar2(20),
price number(4),
s_id number(5) references t_student35(id) unique
);

*映射关联关系
<!-- Student -->
<class name="Student" table="t_student35">
<id name="id" column="id" type="java.lang.Integer">

<generator class="increment"></generator>
</id>
<property name="name" type="java.lang.String"></property>
<property name="age" type="java.lang.Integer"></property>
<!-- 关系属性:computer
*注意 one-to-one 标签的默认行为,双方的主键相连
*通过property-ref="" 更改此默认行为,指定双方的连接的列
如下的配置【class="Computer" property-ref="student"】是在:
指定当前方:Student,应该连接对方:Computer 的student属性(对应的列 )
-->
<one-to-one class="Computer"property-ref="student"name="computer"cascade="save-update">
</one-to-one>
</class>

<class name="Computer" table="t_computer35">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="brand" type="java.lang.String"></property>
<property name="price" type="java.lang.Integer"></property>
<many-to-one unique="true" name="student" class="Student"
column="s_id" cascade="save-update">
</many-to-one>
</class>



3、【1:*】
create table
id number(5) primary key,
name varchar2(20),
age number(3)
);
create table
id number(5) primary key,
price number(4),
note varchar2(20),
user_id number(5) references
);


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.c35.one2many">
<!-- 1:* -->
<!-- User -->
<class name="User" table="t_user35">
<id name="id" column="id" type="java.lang.Integer">
<!-- id生成器(生成策略),保证在插入数据时id唯一
increment:递增策略
-->
<generator class="increment"></generator>
</id>
<property name="name" type="java.lang.String"></property>
<property name="age" type="java.lang.Integer"></property>
<!-- 关系属性: orders
1.关系属性名
2.关系对方
3.关系中的外键
4.级联
*inverse="true"==>告知主表不用维护外键,防止在主表级联插入从表时重复维护外键。
-->
<set name="orders" cascade="save-update,delete" inverse="true">
<!-- 映射关系中的外键的 -->
<key column="user_id"></key>
<one-to-many class="Order"/>
</set>
</class>
<!-- Order -->
<class name="Order" table="t_order35">
<id name="id" column="id" type="java.lang.Integer">
<!-- id生成器(生成策略),保证在插入数据时id唯一
increment:递增策略
-->
<generator class="increment"></generator>
</id>
<property name="note" type="java.lang.String"></property>
<property name="price" type="java.lang.Integer"></property>
<!-- 关系属性: user
1.关系属性名
2.关系对方
3.关系中的外键
4.级联
-->
<many-to-one name="user" class="User" column="user_id" cascade="save-update"></many-to-one>
</class>
</hibernate-mapping>

【*:*】
建表语句:

create table
number(10) not null,
name varchar2(255 char),
age number(12),
primary key
)
create table
number(10) not null,
name varchar2(255 char),
number(10),
primary key
)

create table
number(10) references
number(10) references
primary key
)

映射:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.c35.many2many">
<class name="Student" table="t_student36">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment">
</generator>
</id>
<property name="name" column="name" type="java.lang.String"></property>
<property name="age" column="age" type="java.lang.Integer"></property>
<set name="courses" cascade="save-update,delete" table="relation_s_c">
<key column="student_id"></key>
<many-to-many class="Course" column="course_id" ></many-to-many>
</set>
</class>


<class name="Course" table="t_course36">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment">
</generator>
</id>
<property name="name" type="java.lang.String"></property>
<property name="ctime" type="java.lang.Integer"></property>
<set name="students" table="relation_s_c"
cascade="save-update" inverse="true">
<key column="course_id" ></key>
<many-to-many class="Student" column="student_id"></many-to-many>
</set>
</class>
</hibernate-mapping>