Hibernate学习笔记(二) 建立关系

目录

一、多对一
二、一对多
三、多对多


一、多对一

这里以Product(多)对Category(一)为例。
1.准备Product.java (id,name,price)
2.准备Product.hbm.xml
3.准备Category.java (id,name)
4.准备Category.hbm.xml
5.在hibernate.cfg.xml中增加Category的映射


6.为Product.java增加category属性

    Category category;
    public Category getCategory() {
        return category;
    }
    public void setCategory(Category category) {
        this.category = category;
    }

7.在Product.hbm.xml中设置Category 多对一关系
使用many-to-one 标签设置多对一关系
name="category" 对应Product类中的category属性
class="Category" 表示对应Category类
column="cid" 表示指向 category表的外键,这个外键就是在product表中增加字段cid,由hibernate自动完成。



二、一对多

这里以Category(一)对Product(多)为例。
一对多相较于多对一的区别在于两点:
1.要在“一”这个实体类里增加“多”的属性的时候,是增加一个Set集合

    Set products;
    public Set getProducts() {
        return products;
    }
    public void setProducts(Set products) {
        this.products = products;
    }

2.在“一”的配置文件中增加one-to-many映射(为Category.hbm.xml增加one-to-many映射)
set用于设置一对多(多对多也是他)关系
name="products" 表示对应 Category类中的products属性
lazy="false" 表示不使用延迟加载。
key column="cid" not-null="false" 表示外键是cid,可以为空
one-to-many class="Product" 表示一对多所对应的类是Product

        
            
            
        

三、多对多

这里以Product(多)对User(多)为例。
要实现多对多关系,必须有一张中间表 user_product 用于维护User和Product之间的关系。
1.User.java中增加对应product的集合

    Set products;
    public Set getProducts() {
        return products;
    }
    public void setProducts(Set products) {
        this.products = products;
    }

2.User.hbm.xml中添加many-to-many映射

        
            
            
         

3.Product.java中增加对应Users的集合

    Set users;
    public Set getUsers() {
        return users;
    }
    public void setUsers(Set users) {
        this.users = users;
    }

4.Product.hbm.xml添加many-to-many映射

        
            
            
         

你可能感兴趣的:(Hibernate学习笔记(二) 建立关系)