有时候在实体类映射成数据库表时,我们并不太注意生成的表和列的名称,都是使用默认的名称策略,有的是干脆不使用@Column注解,直接使用字段名;有的则在@Column注解中使用name属性定义自己的名称,但是有时候比如说设计一个数据库有统一前缀或者后缀,上面两种方式就不适用了,而需要统一的设计命名策略,本篇文章对这部分进行总结!
1、 历史版本中命名策略NamingStrategy
在Hibernate的旧版本中,如果要指定应用于全局的命名策略,那么必然要涉及到NamingStrategy这个接口,所有想自定义命名策略的类都要直接或者间接地实现这个接口。这个接口的继承结构如下:

我们一般不直接实现NamingStrategy接口,因为这样我们会实现所有的接口方法,有时候这并不是必要的,所以我们一般直接继承NamingStrategy的实现类,比如DefaultNamingStrategy,这是Hibernate的默认的命名策略,或者ImprovedNamingStrategy使用_分隔字段,具体选择哪个类来继承主要是看我们自己的需求。这里我们使用Hibernate默认的命名策略DefaultNamingStrategy来继承。
首先我们先说明一下将要使用的三个类如下,和上一篇中使用的相同,分别是Person、Address和Direction类。
Person类
@Entity
public class Person implements Serializable{
private static final long serialVersionUID = 8849870114127659929L;
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String name;
@Column</

本文探讨了在Hibernate中如何自定义实体映射的命名策略,以适应数据库表和列的统一命名需求。介绍了历史版本中的命名策略接口及其继承结构,展示了如何通过自定义策略类并结合Spring Boot配置使其生效。同时,通过实例分析了不同策略下表名和列名的生成规则,揭示了注解与全局策略的优先级问题。
最低0.47元/天 解锁文章

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



