Hibernate 注解概述

本文详细介绍了Hibernate中的注解使用方法,包括实体、表、主键等注解的应用场景及配置方式,同时对比了load与get的区别。

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

Hibernate 注解

定义在 class 上面的注解 :

 实体 @Entity

 表 @Table

 Sequence 自定义名字 @SequenceGenerator(name="mySeq" , sequenceName="mySeq_DB")
 
 表生成器 @java.persistence.TableGenerator(
   name = "表生成器的名字:myTableGen" ,
   table = "表生成器的表明:GENERATOR_TABLE" ,
   pkColumnName = "表中key字段的名字:pk_key" ,
   valueColumnName = "表中value字段的名字:pk_value" ,
   pkColumnValue = "第一条记录key字段的数据:table1" ,
   allocationSize = 1 取完数值后数值步进的数值
  )

定义在 属性上面的注解 :

 如果字段上面不写任何注解 默认 @Basic

 主键ID @id

 主键的生成策略 @GeneratedValue 默认auto  相当于 native ;@GeneratedValue(stratege=Generation.SEQUENCE , generator="mySeq"/**只有上面定义了才能使用*/)
 此时这个表 才用的是这个自定义的 Sequence
 
 另一种主键的生成策略 @GeneratedValue(stratege=Generation.TABLE , generator="myTableGen"/**只有上面定义了才能使用*/)

 定义符合主键的三种方式 :
  1、将组件类注解为 @Embeddable ,并将组件的属性注解为 @id
  2、将组件的属性注解为 @EmbeddedId
  3、将类注解为 @IdClass(组件类.class) ,并将该实体中的所有属于主键的属性注解为 @Id
 字段 @Column(name="字段名字" , length="长度" , precision="精度")

 透明 @Transient :不会在数据库中创建该字段

 时间日期字段设置精度 @Temporal:日期时间 、@Temporal(TemporalType.DATE):日期 、@Temporal(TemporalType.TIME):时间

 枚举 @Enumerated(EnumType.STRING):枚举的名字  、@Enumerated(EnumType.ORDINAL) :枚举的下标值

注意 :
 
 Hibernate 注解应当写在 getXxx() 方法上面,而不是写在属性上面
原因 :
 破坏了 Java 的封装的特性,属性都是 private 的,不应该被Hibernate所访问
 Hibernate 可以访问你的私有属性 甚至可以修改

 Hibernate load 和 get 区别
 load 是懒加载  当你取 对象里面的属性值的时候才真正的去执行 SQL 语句
 get  是立即执行 SQL 查询 然后直接付给 对象使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值