DLOG4J 项目的表名命名策略,dlog4j策略,这个 NamingStr
分享于 点击 5514 次 点评:176
DLOG4J 项目的表名命名策略,dlog4j策略,这个 NamingStr
这个 NamingStrategy 扩展类是 DLOG4J 项目用来自动配置 Hibernate 的 Bean 与表名之间映射关系。例如 Bean 名为User,那么对应的表名是 dlog_user ,另外也包含对一些字段名进行映射。
DlogNamingStrategy.java
/** * DlogNamingStrategy.java of DLOG4J_E40 * 作者: Winter Lau * 时间: 2008-1-4 * 项目主页: <a href="http://www.dlog4j.com/">http://www.dlog4j.com</a> */package com.dlog4j.dbaccess;import java.util.HashMap;import org.apache.commons.lang.StringUtils;import org.hibernate.cfg.ImprovedNamingStrategy;/** * DLOG4J项目的表名命名策略 */class DlogNamingStrategy extends ImprovedNamingStrategy { private final static String PREFIX = "dlog_"; private final static String PACKAGE = "com.dlog4j.beans."; private final static String POSTFIX = "Bean"; @Override public String classToTableName(String className) { if(className.startsWith(PACKAGE)) className = className.substring(PACKAGE.length()); return PREFIX + super.classToTableName(StringUtils.substringBeforeLast(className, POSTFIX)); } @Override public String propertyToColumnName(String propertyName) { int idx = propertyName.lastIndexOf('.'); if(idx >=0) propertyName = propertyName.substring(idx+1); String cn = properties.get(propertyName); if(cn != null) return cn; return super.propertyToColumnName(propertyName); } /** * 默认的字段名映射方式 */ protected final static HashMap<String, String> properties = new HashMap<String, String>(){{ put("user", "username"); put("site", "site_name"); put("parent", "parent_id"); }};}
使用方法
cfg = new Configuration().setNamingStrategy(new DlogNamingStrategy()).configure(cfg_path);
用户点评