Hibernate注解整理笔记

<常用注解>
@Temporal(TemporalType.DATE) :指定日期时间的类型

@Transient:指定属性不需要映射

@Batch :批量操作

指定主键并自增
<1>、@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen")
@SequenceGenerator(name = "gen", sequenceName = "seqCarId", initialValue = 1, allocationSize = 1)
<2>、@Id
 @GeneratedValue(generator="gen")
 @GenericGenerator(strategy="uuid", name="gen")

//添加缓存机制
:region:寻找缓存名; usage(必须)说明了缓存的策略
@Cache(region="sampleCache1",usage=CacheConcurrencyStrategy.READ_WRITE)

@Version映射版本号属性,用于乐观锁

@Column指定属性对应的信息

 

<1>一对一单向外键(Annotation)
(1)注解
@OneToOne(cascade=CascadeType.All)
@JoinColumn(name="字段名",unique=true)

注意:保存时应该先保存外键对象,然后再保存主对象

<2>一对一双向外键关联(Annotation)
主控方:@OneToOne
被控方:@OneToOne(mappedbY="对方的关联属性名")
双向关联必配mappedBy属性,因为双向关联只能交给一方控制

<复合主键>

(1)、主键类必须实现serializable接口,重写hashCode()和equals()方法

(2)主键类:@Embeddable  ;实体类 :@EmbeddedId

<3>一对一组件关联(Annotation)
组件类就是一个POJO类
实体类 @Embedded

<3>一对多映射关系
(1)、多对一单向外键(Annotation)
@ManyToOne(cascade={CascadeType.All},fetch=FetchType.EAGER)
@jOINColmn(name="字段名")
(2)、一对多单向外键(Annotation)
一方:
@ManyToOne(cascade={CascadeType.All},fetch=FetchType.LAZY)
@jOINColmn(name="字段名")
注意:多对一的时候,多方设置EAGER,一方设置LAZY
<4>多对多映射关系
(1)、多对多单向外键关联
其中一个多方持有另一个多方集合对象
创建一个中间表
@ManyToMany
@JoinTable(
name="teachers_students",
JoinColunms={@JoinColumnn(name="sid")},
inverseJoinColumns={@JoinColumn(name="tid")}
)

(2)、多对多双向外键关系
双方持有对方的集合对象,其中一方设置
@ManyToMany(mappedBy="students")
另一方
@ManyToMany
@JoinTable(
name="teachers_students",
JoinColunms={@JoinColumnn(name="sid")},
inverseJoinColumns={@JoinColumn(name="tid")}
)

<5>继承映射
在父类
@Entity
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length=1)
在子类
@Entity
@DiscriminatorValue("s")
<6>组件映射
组件类中:
@Embeddable// 嵌入式对象(又名组件)
使用组件的类中:
@Embedded
<7>复合主键映射
1、 在主类                    
@IdClass(PersonPK.class)//指定复合主键对应的主键类

2、//创建复合主键:必须实现串行化接口(Serializable,且重写hashCode()和equals()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值