zoukankan      html  css  js  c++  java
  • Hibernate注解(二):关联关系映射注解

    关联关系映射注解
    以下项目均在之前相应代码的基础上进行的修改。这些项目均需要做的是:
     删除映射文件
     在hibernate.cfg.xml中注册实体类
     注解的重要位置在实体类中关联属性上。这里是关联关系的体现。

    (1)一对多单向关联

    举例:项目annotation_one2many_s
    @OneToMany表明是一对多关联关系。
    @JoinColumn指明该属性所关联的外键。

     targetEntity:指明该属性所关联的类。
     cascade:指定级联类型。其为数组,使用多种级联,则可使用{ }赋值。其值为Cascade常量:

    对于一对多单向关联关系的多方,由于其不具备维护关联关系的能力,即没有一方对象作为属性,所以这里是不用设置关联相关的注解的。

    (2)一对多双向关联

    举例:项目annotation_one2many_d
    这其中增加了mappedBy属性。

    mappedBy属性用法:
     该属性与关联关系的维护权相关。
     该属性应放在放弃维护权一方。
     该属性值为对方的关联属性,表明以后的关联关系将由它来负责。
     使用该属性的注解,无需也不能再设置cascade属性。
     该属性只可能在双向关联中使用。
     使用了该属性,将不能再使用@JoinColumn注解。因为@JoinColumn注解表示其所注解的属性将来通过set方法设值后,会与DB中哪个字段相关联。
    mappedBy属性表示当前注解的关联属性放弃了维护权,即使执行了set方法将值设置入,其也不会写入到DB中。
    也正因为放弃了维护权,与DB无关了,所以设置了mappedBy属性的注解,再设置cascade也就无意义了。
    一个是使被注解者与DB相关,一个是使被注解者放弃与DB的关系,它们是相互矛盾的。

    (3)自关联

    (4)多对一单向关联

     

    (5)多对多单向关联

    举例:annotation_many2many_s
    多对多关联使用@ManyToMany注解。其会自动生成一个中间表,表名为两个关联对象的映射表名的联合:表1_表2。该表包含两个字段,字段名也与表名相关。字段名分别为:表1_id与表2_id。当然,默认的表名与字段名均可通过@JoinTable进行修改(不研究)。

    (6)多对多双向关联

  • 相关阅读:
    数据库30条规范
    数据库索引原理
    HashMap的实现原理
    Google 和 Baidu 常用的搜索技巧
    Arrays工具类十大常用方法
    fastjson将json格式null转化空串
    SolrCloud的介绍
    网页背景图片自适应浏览器大小
    addlinkedserver
    常用
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9015308.html
Copyright © 2011-2022 走看看