最近公司做SAAS项目,以前用的数据源为c3p0,数据库表的命名规则为类名(驼峰)转为下划线。
比如:PersonMsg (类) 对应 表名 person_msg(表)
而现在公司用的是eclipselink做dao层操作。为了避免大量修改只能去看eclipselink是否有支持命名策略。
最后发现了终极boss《SessionCustomizer》,这个玩意。分享出来 ,以后不迷路。
public class SystemCustomizer implements SessionCustomizer {
@Override
public void customize(Session session) throws Exception {
Map<Class, ClassDescriptor> descs = session.getDescriptors();
Collection<ClassDescriptor> descriptors = descs.values();
for (ClassDescriptor desc : descriptors) {
String fullClassName = desc.getJavaClassName();
String className=Helper.getShortClassName(fullClassName);
String tableName = camelToUnderline(className);
Vector<String> tableNames = new Vector<