有时候在实体类映射成数据库表时,我们并不太注意生成的表和列的名称,都是使用默认的名称策略,有的是干脆不使用@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;