DLOG4J 项目的表名命名策略

来源:互联网 发布:通达信软件公式函数 编辑:程序博客网 时间:2024/04/30 15:43
这个 NamingStrategy 扩展类是 DLOG4J 项目用来自动配置 Hibernate 的 Bean 与表名之间映射关系。

例如 Bean 名为 User,那么对应的表名是 dlog_user ,另外也包含对一些字段名进行映射。

标签:Hibernate NamingStrategy DLOG4J

[1].[代码] DlogNamingStrategy.java 跳至 [1] [2]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
 * DlogNamingStrategy.java of DLOG4J_E40
 * 作者: Winter Lau
 * 时间: 2008-1-4
 * 项目主页: <a href="http://www.dlog4j.com/">http://www.dlog4j.com</a>
 */
packagecom.dlog4j.dbaccess;
 
importjava.util.HashMap;
 
importorg.apache.commons.lang.StringUtils;
importorg.hibernate.cfg.ImprovedNamingStrategy;
 
/**
 * DLOG4J项目的表名命名策略
 */
classDlogNamingStrategy extendsImprovedNamingStrategy {
 
    privatefinal static String PREFIX = "dlog_";
    privatefinal static String PACKAGE = "com.dlog4j.beans.";
    privatefinal static String POSTFIX = "Bean";
     
    @Override
    publicString classToTableName(String className) {
        if(className.startsWith(PACKAGE))
            className = className.substring(PACKAGE.length());
        returnPREFIX + super.classToTableName(StringUtils.substringBeforeLast(className, POSTFIX));
    }
 
    @Override
    publicString propertyToColumnName(String propertyName) {
        intidx = propertyName.lastIndexOf('.');
        if(idx >=0)
            propertyName = propertyName.substring(idx+1);
        String cn = properties.get(propertyName);
        if(cn != null)returncn;
        returnsuper.propertyToColumnName(propertyName);
    }
 
    /**
     * 默认的字段名映射方式
     */
    protectedfinal static HashMap<String, String> properties = newHashMap<String, String>(){{
        put("user",        "username");
        put("site",        "site_name");
        put("parent",      "parent_id");
    }};
}

[2].[代码] 使用方法 跳至 [1] [2]

?
1
cfg = newConfiguration().setNamingStrategy(newDlogNamingStrategy()).configure(cfg_path);

0 0
原创粉丝点击