hibernate注解入门

本文深入探讨了Hibernate注解在Java持久化中的应用,从基础概念到高级特性,包括@Entity, @Id, @Basic, @Column, @Transient等关键注解的详细解释,以及如何在实体类中正确使用这些注解来实现对象关系映射(ORM)。同时,还介绍了Hibernate验证注解,如@pattern, @length, @email等,用于确保数据输入的有效性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 传统上,Hibernate的配置依赖于外部xml文件:数据库映射被定义为一组XML映射文件,并在启动时进行加载。

2、 使用Hibernate Annotation,你至少需要具备Hibernate3.2和Java 5。除了标准的Hibernate jar和依赖项之外,你还需要Hibernate-annotation.jar和java持久性API。

——————————注解命令说明————————————————
1、 @Entity(name="EntityName") 必须, name为可选,对应数据库中的一个表
2、 tablename=""catalog="",schema="" 通常和@Entity配合使用(可选)
3、 @id 必须,定义映射到数据库表的主键的属性,一个实体只能有一个id,置于getXXX()前
4、 GeneratedValue(strategy=GenerationType, generator="")可选
strategy表示主键生成策略,有Auto,Indentity,sequence和table 4种
generator:表示生成器的名称,此属性通常和ORM框架相关,例如Hibernate可以指定uuid等主键生成方式。

例子: @id
@GeneratedValue(strategy=strategyType.sequence)
public int getPK(){return pk;}

5、 @Basic(fetch=FetchType,optional=true)可选
表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXXX()方法,默认即为@Basic
fetch: 表示读属性的读取策略:Eager,lazy
optional:表示该属性是允许为null,默认为true

6、 @column: 描述了数据库表中该字段的详细信息定义。有name、nullable、unique、length、insertable、updateable
columnDefinition:表示该字段在数据库中的实际类型,如(date,blob,text等)

7、 @Transient: 表示该属性并非一个到数据库表字段的映射,ORM将忽略它
8、 @ManyToOne(fetch=FetchType,cascade=CascadeType)
cascadeType: 表示默认的级联操作策略,可以指定all、presisit,merge,reference和move中的若干组合,默认为无级联操作
targetEntity:表示该属性关联的实体类型(通常不必指定,可以 自行配好)

9、 @joinColumn 与column类似,其描述的不是一个简单字段而是一个关联字段。
10、@oneToMany

11、@oneToone
12、@manyTomany
本质上是两个一对多关联,但在ManyToMany描述中,中间表是由ORM框架自动处理
mappedBy: 表示多对多关联的另一个实体类的对应属性集合

13、 @mappedSuperClass: 可选, 可以将超类的JPA注释传递给子类,使子类能够继承超类的JPA注解。
14、 Embedded:可选,将几个字段组成一个类,并作为整个Entity的一个属性,例如:user包括id,name,city,street,zip属性,希望city,street,zip属性映射为address对象,这样user对象将具有city,street,address这三个属性。Address对象必须定义为@Embededable
@embedable
public class address {city,street,zip}
@Entity
public class user{
@embeded
public address getAddress(){... ...}
}


——————————Hibernate验证注解————————————————
@pattern @length @email @range @min @max
@size
此上每隔注解都可能有一个message属性,用于在验证失败后返回信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值