|
如果您在定義映射檔案的時候,沒有特別在<class>上使用table指定表格名稱,
則Hibernate預設會使用實體類別名稱作為表格名稱,如果沒有特別在<property>上使用column指定欄位
名稱,則
Hibernate預設會使用屬性名稱作為欄位名稱。 您可以實作NamingStrategy來改變這個預設,例如:
package onlyfun.caterpillar; ImprovedNamingStrategy 實作了NamingStrategy介面,在這邊您實作了classToTableName(),如果<class>上沒有 設定table屬 性,則會呼叫這個方法,傳入class名稱,使用StringHelper.unqualify()方法可以協助我們去除套件名稱,在這邊您可以修改名稱 後傳回,Hibernate將使用傳回的字串作為表格名稱。 當設定<property>屬性沒有指定column時,會呼叫 propertyToColumnName()。如果<class>有設定table,則會呼叫tableName(),如 果< property>有設定column,則會呼叫column()。 所以,您可以實作NamingStrategy來改變您設定檔至表格的命名慣例,在讀取映射文件之前,可以先設定 NamingStrategy,之後就可以使用NamingStrategy中定義的命名方式,例如: ...
private static SessionFactory sessionFactory; static { try { Configuration config = new Configuration(); config.setNamingStrategy(new TNamingStrategy()).configure(); sessionFactory = config.buildSessionFactory(); } catch (Throwable ex) { throw new ExceptionInInitializerError(ex); } } ... |