• hibernate 实体关系映射笔记


    @经常使用属性说明:
        @Entity:实体类
        @Table:指定相应数据表
        @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态
        @Column:配置普通属性,除了主键外,java基本类型的属性
        @Base:普通属性的载入方式
        @GeneratedValue:主键生成策略
        @Temporal:日期类型(DATE,TIME还是TIMESTAMP),假设属性类型是java.util.Date(是以上3个类的父类)类型时才须要使用该@声明详细的日期类型
        @Transient:暂时属性
        @Version:版本号属性,配置乐观锁

    hibernate实体关联映射:
        一对一单向:
            一段:还有一端实体属性:@OneToOne(cascade),@JoinColumn(name=外键名,unique=true)
            还有一端:
            一段数据库:还有一端实体的外键:表名_id
            还有一端数据库:
        一对一双向:
            一段:还有一端实体属性:@OneToOne(cascade),@JoinColumn(name=外键名,unique=true)
            还有一端:还有一端实体属性:@OneToOne(mappedBy=还有一端属性名)
            一段数据库:还有一端实体的外键:表名_id
            还有一端数据库:
        一对一双向(主键):
            一段:@Id,@GeneratedValue,还有一端实体属性:@OneToOne,@PrimaryKeyJoinColumn
            还有一端:@Id,不能使用@GeneratedValue(与还有一端使用同样主键),还有一端实体属性:@OneToOne,@PrimaryKeyJoinColumn
            一段数据库:没有关联,依据主键推断
            还有一端数据库:没有关联,依据主键推断
        一对多单向:
            一段:多端实体集合属性:@OneToMany(fetch,cascade,targetEntity(使用范型能够省略)),@JoinColumns(value={@JoinColumn(name="外键名"),referencedColumnName="还有一端id"})
            多端:
            一段数据库:
            多端数据库:一段实体的外键:表名_id
        多对一单向:
            一段:
            多端:一段实体属性:@ManyToOne(CascadeType,fetch),@JoinColumn(外键名)
            一段数据库:
            多端数据库:一段实体的外键:表名_id
        一对多双向(多对一双向):
            一段:多端实体集合属性:@OneToMany(mappedBy="多端实体类中的一段属性名")
            多端:一段实体属性:@ManyToOne(fetch,cascadeType),@JoinColumn(外键名)
            一段数据库:
            多端数据库:一段实体的外键:表名_id
        多对多单向:
            多段:还有一端实体集合属性:@ManyToMany(fetch,cascade,),@JoinTable(name,JoinColumns,inverseJoinColumns)
            还有一多端:
            多段数据库:
            还有一端端数据库:
            中间表(表1_表2):外键1:表1_id,外键2:表2_id
        多对多双向:
            多段:还有一端实体集合属性:@ManyToMany(fetch,cascade,),@JoinTable(name,JoinColumns,inverseJoinColumns)
            还有一多端:@ManyToMany(mappedBy=还有一多端实体集合属性名)
            多段数据库:
            还有一端端数据库:
            中间表(表1_表2):外键1:表1_id,外键2:表2_id


    1 双边关系中,控制权一般交给多端,由mappedBy指定,配置信息要到多端找
    2 mappedBy把控制权交给还有一端(还有一端中的属性名),还有一端配置同单向配置全然同样
    3 多对多属性必须使用@JoinTable指定中间表的配置,当中name指定表名,joinColumns指定该表与中间表的相应关系,inverseJoinColumns指定还有一端与中间表的关系
    4 mappedBy表示该属性是反向属性,与还有一端实体类的指定的属性相应
    5 Map映射:集合属性能够使用Map类型,Map使用索引-值属性对,速度快,配置时跟@OneToMany,@ManyToMany一样,仅仅需再添加�@MapKey就可以,如:
        @MapKey(name = "name")//配置数据库列名,使用该字段索引数据
        private Map<String,Student> students = new new HashSet<String,Student>();
  • 相关阅读:
    mtu
    OC2_使用系统协议
    OC1_协议语句
    Json文件/网址解析
    文件归档
    Plist文件
    NS-Date/NSDateFormatter
    OC10_文件练习
    OC9_文件操作
    OC8_NSData
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3800889.html
Copyright © 2020-2023  润新知