작명 지침 사용하기
특징
- Hibernate provides a feature that allows you to enforce naming standards automatically.
설정하기
- NamingStrategy 인터페이스 구현하기
- ImprovedNamingStrategy 클래스 상속받아서 구현하기
네임스페이스 등록하기
import org.hibernate.cfg.ImprovedNamingStrategy;
import org.hibernate.util.StringHelper;
public class CENamingStrategy extends ImprovedNamingStrategy {
public String classToTableName(String className) {
return StringHelper.unqualify(className);
}
public String propertyToColumnName(String propertyName) {
return propertyName;
}
public String tableName(String tableName) {
return "CE_" + tableName;
}
public String columnName(String columnName) {
return columnName;
}
public String propertyToTableName(String className, String propertyName) {
return "CE_" + classToTableName(className) + '_'
+ propertyToColumnName(propertyName);
}
}
- classToTableName(): <class> 맵핑에서 table 속성에 값을 입력하지 않았을 때 호출.
- propertyToColumnName(): 명시적인 column 이름을 설정하지 않았을 때 호출.
- tableName(), columnName(): 명시적으로 이름을 설정했을 때 호출.
- 동적으로 설정을 바꿀 수 있음.
동적으로 네임스페이스 바꾸기
Configuration cfg = new Configuration();
cfg.setNamingStrategy( new CENamingStrategy() );
SessionFactory sessionFactory sf =
cfg.configure().buildSessionFactory();
모르는 것
- SessionFactory 설정할 때 구현한 클래스를 등록해 주면 되는건가?