Hibernate注解使用入门

*hibernate在3.2以后也引入了注解机制,注解的使用大大简化了我们的实体xml繁琐的配置操作,让程序员彻底从复杂的xml配置解放出来,当然注解本身也加大了代码的可读性和维护工作,但本身还是比较优秀的机制,*

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;
    ...
}

@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也是能自动建表,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值