自定义基本类型
即除了hibernate自带的基本类型,自定义Java类型与SQL类型绑定
1、实现BasicType接口并注册
2、实现UserType接口不需要类型注册
映射枚举
@Enumerated
属性转换器
AttributeConverter接口,重写convertToDatabaseColumn、convertToEntityAttribute方法,打上@Convert
Date类型格式化
@Temporal,打在date类型字段
1、@Temporal(TemporalType.DATE)——》实体类会封装成日期“yyyy-MM-dd”的 Date类型。
2、@Temporal(TemporalType.TIME)——》实体类会封装成时间“hh-MM-ss”的 Date类型。
3、@Temporal(TemporalType.TIMESTAMP)——》实体类会封装成完整的时间“yyyy-MM-dd hh:MM:ss”的 Date类型。
属性生成
@Generated:实体持久化或者更新时,hibernate从数据获取数据生成属性,貌似不用持久化打注解的那个字段
@GeneratorType:实体持久化或者更新时,通过自定义生成器来设置当前注解属性的值
@CreationTimestamp:插入时自动赋值时间
@UpdateTimestamp:更新时自动赋值时间
列转换器:读写表达式
@ColumnTransformer(read = “quantity / 100”, write = “? * 1000”)
虚拟列,可通过配置计算赋值
@Formula
实体动态插入
@DynamicInsert
实体动态更新
@DynamicUpdate
懒加载
@Basic(fetch = FetchType.LAZY)
hibernate默认不对@Basic处理,需要字节码增强
不同属性懒加载:@LazyGroup
乐观锁
@Version
@OptimisticLock
悲观锁
@Lock
本文探讨了如何自定义Java类型与SQL绑定,包括实现BasicType和UserType接口,使用@Enumerated处理枚举,以及利用@Temporal控制日期格式。还讲解了属性生成、乐观锁与悲观锁等关键概念,如@Generated、@Version和@OptimisticLock。此外,懒加载、列转换器和虚拟列的配置也一并介绍。
990

被折叠的 条评论
为什么被折叠?



