DLOG4J 项目的表名命名策略

这个 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>
  */
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" );
     }};
}

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

?
1
cfg = new Configuration().setNamingStrategy( new DlogNamingStrategy()).configure(cfg_path);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值