Hibernate注解使用入门

来源:互联网 发布:access数据库制作软件 编辑:程序博客网 时间:2024/06/06 21:42

1、什么是JPA
JPA是一种持久化标准,我们可以简单的理解为就是我们ORM框架的注解标准,
JPA就是javax.persistenceAPI,简称JPA,是sun公司设计的一套持久化开发的标准体系,有点想jdbc,但是jdbc只是接口没有实现,而JPA不同,他在hibernate之后产生,是sun公司希望把各大ORM框架的标准进行统一的一个设计理念,JPA在我们java里面就已经有一部分实现了。所以类似hibernate的各大持久化框架就对JPA进行了支持,所以我们使用hibernate注解实际上就是JPA,
hibernate的注解是继承自我们的JPA,但是进行功能的扩展。

2、注解入门
@Entity //该类被hibernate当做实体给管理
@Table(name=”xx_plat_role”) //对应数据库的表
catalog=”“, schema=”” 默认都为空
表示数据库的名字,并且对数据库的支持情况不同
这里写图片描述

@Id //配置主键
@GeneratedValue(strategy=GenerationType.IDENTITY) //自增策略
Strategy表示主键自增策略,取值有:
1.GenerationType.AUTO:根据底层数据库自动选择(默认)
2.GenerationType.INDENTITY:根据数据库的Identity字段生成
3.GenerationType.SEQUENCE:使用Sequence来决定主键的取值
mysql用INDENTITY, oracle就用SEQUENCE,AUTO是SQLserver使用

4.GenerationType.TABLE:使用指定表来决定主键取值,结合@TableGenerator使用

@Entity @Table(name="extra_city")@TableGenerator(name = "tg1", table = "extra_table_seq",      allocationSize = 10, initialValue = 1, pkColumnValue = "city")public class City {    @Id    @GeneratedValue(generator = "tg1",                      strategy = GenerationType.TABLE)    private int id;    ...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

@Column(name=”role_name”, columnDefinition=”VARCHAR”, length=20) //关联字段名和数据类型
name:可选,表示数据库表中该字段的名称,默认情形属性名称一致。
Nullable:可选,表示该字段是否允许为null,默认为true。
Unique:可选,表示该字段是否是唯一标识,默认为false。
Length:可选,表示该字段的大小,仅对String类型的字段有效,默认值255。
Inserable:可选,表示在ORM框架执行插入操作时,该字段是否应出现INSERT语句中,默认为true。
Updateable:可选,表示在ORM框架执行更新操作时,该字段是否应该出现在UPDATE语句中,默认为true。对于一经创建就不可以更改的字段,改属性非常有用,如对于birthday字段。

hibernate管理该实体类
这里写图片描述

通过测试发现一个问题:
我们利用xml配置的hibernate是会自动创建表的,
而利用JPA注解的时候,在列的注解上:
@Column(name=”role_id”, columnDefinition=”VARCHAR”,length=20)
如果有设置类型则不会建表,
去掉类型和长度则会自动建表,如果是date和datetime也是能自动建表,

原创粉丝点击