hibernate 实体关系映射笔记(转载自51)

@常用属性说明:
@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 students = new new HashSet();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值