更改hibernate.cfg.xml文件中的默认命名策略

时间:2016-09-13 07:33:30

标签: java hibernate

我正在尝试更改hibernate.cfg.xml中的默认命名策略,但没有成功:

<hibernate-configuration>
 <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    ...
    <property name="cfg.namingStrategy">com.kestuboof.util.LowercaseNamingStrategy</property>

我的策略永远不会打电话。

1 个答案:

答案 0 :(得分:0)

数据库对象和模式元素的命名约定由org.hibernate.cfg.NamingStrategy接口的已使用实现控制。 Hibernate 3.6有四个这个接口的实现:

<强> org.hibernate.cfg.DefaultComponentSafeNamingStrategy org.hibernate.cfg.DefaultNamingStrategy org.hibernate.cfg.EJB3NamingStrategy org.hibernate.cfg.ImprovedNamingStrategy

我决定通过扩展它并覆盖其classToTableName()方法来创建自定义命名策略。我的实现的源代码如下:

import org.hibernate.cfg.ImprovedNamingStrategy;

public class CustomNamingStrategy extends ImprovedNamingStrategy {

    private static final String PLURAL_SUFFIX = "s";


    @Override
    public String classToTableName(String className) {
        String tableNameInSingularForm = super.classToTableName(className);
        return transformToPluralForm(tableNameInSingularForm);
    }

    private String transformToPluralForm(String tableNameInSingularForm) {
        StringBuilder pluralForm = new StringBuilder();

        pluralForm.append(tableNameInSingularForm);
        pluralForm.append(PLURAL_SUFFIX);

        return pluralForm.toString();
    }
}

下一步是配置Hibernate以使用我的自定义命名策略。如果你正在使用Hibernate,你可以

您可以通过调用Configuration类的setNamingStrategy()方法来设置对自定义命名策略的引用,如Hibernate参考文档的实现命名策略部分所述。

您可以在Hibernate XML配置文件中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy,如Hibernate Reference Manual的XML Configuration Section中所述。

如果您使用的是JPA,则可以通过在persistence.xml中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy来设置使用的命名策略