Hibernate注解方式映射

JPA:Java persistence API

JPA注解是JavaEE的标准和规范

JPA是标准接口,Hibernate是实现,优先使用JPA注解。

一:类级别注解

1:@Entity映射实体类

name属性对应数据库中的表(一般不写通过@Table写)

注意:使用@Entity时必须制定实体类的主键属性。

2:@Table映射实体类在数据库中的表

name属性(name=“表名”)表明和实体类名相同时不用写。

3:@Embeddable

表示并非实体类(Entity),不会映射一张表,可以嵌入到另一个实体类(Entity)中作为属性存在。

二:属性级别注解

 1:@Id必须的

定义了映射到数据库表中的主键属性(一个或多个)

注意:多个主键属性的实体类必须实现serializable接口。

2:@GeneratedValue(strategy=   ,generator=    )

定义主键生成策略

strategy主键生成策略,取值有:1)GenerationType.AUTO(根据底层数据库自动选择,默认值)

                                                   2)GenerationType.IDENTITY(根据数据库中的Identity字段生成)

                                                   3)GenerationType.SEQUENCE(使用序列来决定,Oracle和DB2支持但无自动增长类型)

注意:主键为String时,要手动添加主键,不能用JPA的主键生成策略,要通过generator来指定主键生成器,如:

@GeneratedValue(generator= “名”   )

@GenericGenerator(name=“名”,strategy=“assigned”)

3:@Column可将属性映射到列

常用属性:name数据库中字段的名、nullable能否为空、unique该字段是否唯一标识(默认为false)、length长度、

                insertable该字段是否出现在insert语句中,默认true

                updateable...............................update..............................(可设置一些属性一经填写就不能修改,设为false)

4:一对一单项外键

@OneToOne(cascade=CascadeType.ALL)

@JoinColumn(name=“外键”,unique=“true”)

(有外键的一般作为主控方)

注意:保存的时候要先保存外键对象,再保存主表对象

5:一对一双向外键

被控方

@OneToOne(mappedBy=“主控方持有的北控方的实例化对象”)

交给对方来控制

6:多对一

一般多方作为主控方

多方@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)积极地抓取策略

        @JoinColumn(name=“外键”,referencedColumnName=“这个外键在数据库中的名”)

一方基本上差不多不过可以把fetch的值改为LAZY

双向的话:多方不变,一方可以简写@OneToMany(mappedBy=“对方持有的我方的实例化对象”)

注意:写简写时要保证多方的已经进行了映射,双方不能都是简写。

7:多对多

其中一方(主控方):@ManyToMany

                                   @JoinTable(

                                            name=“关联表”

                                            joincolumns=@JoinColumn(name=“关联表中指向自己的外键”)

                                            inverseJoinColumns=@JoinColumn(name=“关联表中指向对方的外键”)

                                     )

被控方:(简写)@ManyToMany(mappedBy=“对方持有的我放的实例化对象”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值