近期的一個項目有一個需求,有N個考覈單位,要對每個考覈單位生成一張考覈狀況表。這樣作的目的是橫切數據庫,這這個需求的實現中,個人組員遇到了一個技術問題,我將個人解決的方法和整個思考過程與你們分享,java
用一個配置文件。一個類去映射多個表,(每個表的結構一樣)。依照平時的作法。有多少個表就要 寫多少個配置文件,豈不是很是麻煩。如何才幹僅僅寫一個配置文件就能達到上述目的呢? 通過研究,發現Hibernate中的NamingStrategy可以達到這個目的。數據庫
它是用來定義表名和列名映射規 則的一個接口。咱們要經過實現這個接口來實現本身的命名策略。這個接口中包括的十個方法,當中的 public String classToTableName(String className)是經過類名來映射表名的。實現咱們的想法就要用 到這種方法。好了,如下來看怎麼作: post
咱們要作的就是經過得到月份來動態的選擇表。咱們從這種方法中這樣寫:
spa
<span style="font-size:18px;">/** *這個類是又一次定義一個hibernate的命名規範 **/ public class MyNamingStrategy extends DefaultNamingStrategy { //這是爲了實現單例 public static final MyNamingStrategy INSTANCE = new MyNamingStrategy(); //又一次定義名稱映射關係 public String classToTableName(String className) { //本身的名稱定義規則 return 「biz_」 + Calendar.getInstance().get(Calendar.DAY_OF_MONTH); } } </span>
三、使用命名策略。
要使用這個命名策略可以這樣:
hibernate
<span style="font-size:18px;">Configuration cfg = new Configuration() .setNamingStrategy(MyNamingStrategy.INSTANCE) .configure(「hibernate.cfg.xml」) .addFile(「biz.hbm.xml」); </span>
ok,這樣就可以實現咱們的動態表名映射啦!code
很是多時候,我是經常被本身的思惟所束縛,這是個人一種思惟慣性,而且我僅僅要找到一種解決這個問題的方法,就會看成寶典收藏,別人有比你好的,也會有種排斥的信息,兩者偏偏是阻礙咱們進步的牢籠,咱們應該衝破這曾牢籠。咱們應該更大膽些,想到且看到咱們和曾經大相徑庭的一面!xml