hibernate的数据关联映射

数据关联映射分为:一对多、多对一,一对一,多对多。

cascade属性
• 
save-update:在执行保存和修改是进行级联操作
• 
delete:在执行删除时进行级联操作
• 
all:在所有情况下进行级联操作
 none:不进行级联操作(默认)

抓取策略

 

一对多、多对一

一对多、多对一持久化类设计
// User类
public class User { 
 
private int id; 
private String name; 
private int age; 
private Set<Address> addressSet; 
 
//get set method 
}

//Address类
public class Address { 
 
private int id; 
private String address; 
private int tel; 
private User user; 
 
//get set method 
}
address.hbm.xml
<hibernate-mapping package="com.hussion.pojo"> 
    <class name="Address" table="t_address"> 
        <id name="id"> 
          <generator class="native"/> 
        </id> 
        <property name="address"></property> 
        <property name="tel"></property> 
        <many-to-one name="user" class="User" column="userid"/> 
    </class> 
</hibernate-mapping>
user.hbm.xml
<hibernate-mapping package="com.hussion.pojo">  
    <class name="User" table="t_user"> 
        <id name="id" column="id"> 
          <generator class="native"></generator> 
        </id> 
        <property name="name" column="name"></property> 
        <property name="age" column="age"></property> 

        <!--inverse="true"放弃关系维护--> 
        <set name="addressSet" inverse="true"> 
          <key column="userid"/> 
          <one-to-many class="Address"/> 
        </set> 
    </class>  
</hibernate-mapping>

一对一

持久化类设计
public class Person { 
 
private int id; 
private String userName; 
private Card card; 
 
//get set Method 
} 

public class Card { 
 
private int id; 
private String cardNum; 
private Person person; 
 
//get set Method 
}
person.hbm.xml
<hibernate-mapping package="com.hussion.pojo"> 
    <class name="Person" table="t_person"> 
        <id name="id"> 
          <generator class="native"></generator> 
        </id> 
         <property name="userName"></property> 
          <one-to-one name="card" class="Card" cascade="delete"/>
    </class> 
</hibernate-mapping>

多对多

ublic class Teacher { 
 
private int id; 
private String name; 
private Set<Student> student; 
 
//get set method 
} 
public class Student { 
 
private int id; 
private String name; 
private Set<Teacher> teacher; 
 
//get set method 
}
teacher.hbm.xml
<hibernate-mapping package="com.hussion.pojo"> 
    <class name="Teacher" table="t_teacher"> 
        <id name="id" column="id"> 
          <generator class="native"></generator> 
        </id> 
          <property name="name"></property> 
        <set name="student" table="t_student_techer"> 
          <key column="teacherid"/> 
          <many-to-many class=“Student” column=“studentid”/> 
        </set> 
    </class> 
</hibernate-mapping>
student.hbm.xml
<hibernate-mapping package="com.hussion.pojo"> 
    <class name="Student" table="t_student"> 
        <id name="id" column="id"> 
          <generator class="native"></generator> 
        </id> 
        <property name="name"></property> 
        <set name="teacher" table="t_student_techer"> 
            <key column="studentid"/> 
            <many-to-many class="Teacher" column="teacherid /> 
        </set> 
    </class> 
</hibernate-mapping>

多对多一方要放弃关系维护
<set name="student" table="t_teacher_student"  inverse="true">

排序
<many-to-many class="Student" column="s_id"  order-by="id asc,name desc"></many-to-many>

延迟加载关闭 : lazy="false"

hibernate的数据关联映射,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。