天天看点

[Java web]-- hibernate3(3)

1.【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">
 <!-- id生成器(生成策略),保证在插入数据时id唯一 
 increment:递增策略
 -->
 <generator class="increment"></generator>
 </id>
 <property name="name" type="java.lang.String"></property>
 <property name="age" type="java.lang.Integer"></property>
 <!-- 关系属性:computer
 1.关系属性名
 2.关系对方
 3.关系中的外键
 4.级联
 *注意 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">
 <!-- id生成器(生成策略),保证在插入数据时id唯一 
 increment:递增策略
 -->
 <generator class="increment"></generator>
 </id>
 <property name="brand" type="java.lang.String"></property>
 <property name="price" type="java.lang.Integer"></property>
 <!-- 关系属性:student
 1.关系属性名
 2.关系对方
 3.关系中的外键      column="外键列名"
 4.级联
 *unique="true"唯一约束
 -->
 <many-to-one unique="true" name="student" class="Student" column="s_id" cascade="save-update"></many-to-one>
 </class>
    *使用
 ==============================================================================================
 2.【1:*关联关系映射】
    *搭建关联关系
 create table t_user35(
 id number(5) primary key,
 name varchar2(20),
 age number(3)
 );
 create table t_order35(
 id number(5) primary key,
 price number(4),
 note varchar2(20),
 user_id number(5) references t_user35(id) 
 );
    *映射关联关系
 <!-- 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>
    *使用关联关系


    *使用【1:*】关系时,可以使用双向的也可以使用单向的。如果可以满足需求,则尽量让关系简单。
     单向关系:关系映射在一方,另一方不映射关系