Hibernate--注解

hibernate里常用注解包括,类注解,属性注解,关系注解,其他的注解

    类注解:在注解示例-注解方式的Product中,Product类声明前面有两个注解:@Entity 和 @Table(name = "product_")
@Entity 表示这是一个实体类,用于映射表

@Table(name = "product_") 表示这是一个类,映射到的表名:product_

@Entity
@Table(name = "product_")
public class Product {
    int id;
    String name;
    float price;
}

    属性注解:属性注解是配置在属性对应的getter方法上的

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id")   
    public int getId() {
        return id;
    }
@Id 表示这是主键
@GeneratedValue(strategy = GenerationType.IDENTITY) 表示自增长方式使用mysql自带的

@Column(name = "id") 表示映射到字段id


多对一注解:

    把多对一改成用注解来实现
1. 把Category的id和name字段改为支持注解
注: 分类的getName上并没有加上@Column(name="name"),也可以达到映射的效果。 因为getName方法默认会被认为是字段映射。 除非加上了@Transient 才表示不进行映射

2. 把Product的getCategory进行多对一映射

    @ManyToOne
    @JoinColumn(name="cid") 
    public Category getCategory() {
        return category;
    }
@ManyToOne 表示多对一关系

@JoinColumn(name="cid") 表示关系字段是cid

3. 为hibernate.cfg.xml 添加Category的映射

<mapping class="com.how2java.pojo.Category" />


一对多注解:

    在上一步的基础上做如下改动

1. 为Category再加product集合,并提供getter和setter

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

2. 给getProducts方法加上一对多注解
    @OneToMany(fetch=FetchType.EAGER)
    @JoinColumn(name="cid") 
    public Set<Product> getProducts() {
        return products;
    }
@OneToMany 表示一对多,fetch=FetchType.EAGER 表示不进行延迟加载(FetchType.LAZY表示要进行延迟加载)
@JoinColumn(name="cid") 表示映射字段

多对多注解:
    1. 在 基于XML配置的多对多知识点的基础上进行多对多注解的修改

    2.像上两步那样,为Product,User,Category 加上类和属性注解

    3. 加上 多对一注解ManyToOne

    4. 加上 一对多注解OneToMany

    5. ManyToMany
        为Product的getUsers加上
 
    @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinTable(
            name="user_product",
            joinColumns=@JoinColumn(name="pid"),
            inverseJoinColumns=@JoinColumn(name="uid")
    )    
    public Set<User> getUsers() {
        return users;
    }
        为User的getProducts加上
    @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinTable(
            name="user_product",
            joinColumns=@JoinColumn(name="uid"),
            inverseJoinColumns=@JoinColumn(name="pid")
    )    
    public Set<Product> getProducts() {
        return products;
    }






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值