zoukankan      html  css  js  c++  java
  • 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>();
  • 相关阅读:
    python,生产环境安装
    neo4j 图数据库
    RNN系列
    机器学习关于AUC的理解整理
    fensorflow 安装报错 DEPENDENCY ERROR
    dubbo Failed to check the status of the service com.user.service.UserService. No provider available for the service
    使用hbase遇到的问题
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
    gradle 安装
    jenkins 安装遇到的坑
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3800889.html
Copyright © 2011-2022 走看看