Hibernate注解方式映射

原创 2018年04月17日 17:50:41

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=“对方持有的我放的实例化对象”)

hibernate 注解方式配置实体的映射

Hibernate注解 1。@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog...
  • jiangbin881
  • jiangbin881
  • 2018-01-12 11:42:59
  • 141

Hibernate:视图映射

虽然Hibernate提供的HQL可以实现多表联合查询,但是我们一般都是将多表查询直接创建为一个视图,直接查询视图就可以了。那么Hibernate怎样映射视图呢? 在网上找了一篇较实用的文章现分享给...
  • wwwwenhuan
  • wwwwenhuan
  • 2013-09-30 17:39:59
  • 3853

hibernate映射关系——继承映射

今天这篇博客,说的是hibernate的继承映射。 一、以前使用过继承映射吗?       刚听到继承映射的时候,不知道是怎么一回事。视频看完,哦,原来我使用过。没有学习过ORM之类知识的孩子们,如果...
  • wangyongxia921
  • wangyongxia921
  • 2014-11-30 12:45:53
  • 1582

Hibernate 注解映射

  • 2012年11月03日 11:06
  • 34KB
  • 下载

hibernate注解方式实现一对多映射

首先是在hibernate.cfg.xml中引入要映射的class 
  • l271640625
  • l271640625
  • 2011-05-07 16:14:00
  • 51035

【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表

【Hibernate继承映射综合分析】 如果系统需要经常进行查操作且子类数量较多,则建议用第一种方案,即每棵生成树映射一张表,这也是最常用的方法,效率较高。 如果追求细粒度的设计且子类数量不多,则可以...
  • huyuyang6688
  • huyuyang6688
  • 2016-02-20 17:19:09
  • 2203

Hibernate一对多关联映射(注解)

Hibernate一对多关联映射,维护端(一方,无外键方)可以进行关联移除,级联删除,级联保存,级联更新,级联刷新。被维护端(多方,外键方),不可以进行关联移除,级联操作,只能级联刷新。   ...
  • hardworking0323
  • hardworking0323
  • 2016-04-10 18:35:51
  • 3361

hibernate双向一对多关联映射(注解版)

  • 2017年05月07日 17:12
  • 15KB
  • 下载

【Hibernate步步为营】--复合主键映射详解

复合主键的使用其实很简单,但是需要注意对象需要被拆分,主键自己需要一个类并且该类需要实现java.io.Serializable接口,其它的属性再重新生成新类,并且类的属性中要有主键类的对象,相应的只...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2014-06-04 13:09:42
  • 3504

hibernate实体—复合主键、视图的注解配置方法

有时一个实体的主键可能同时为多个,例如同样是之前使用的“CustomerEO”实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是相同的实体对象。要配...
  • wlp_name
  • wlp_name
  • 2013-01-28 12:34:24
  • 4729
收藏助手
不良信息举报
您举报文章:Hibernate注解方式映射
举报原因:
原因补充:

(最多只允许输入30个字)