欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

DLOG4J 项目的表名命名策略,dlog4j策略,这个 NamingStr

来源: javaer 分享于  点击 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);
相关栏目:

用户点评