4

有没有办法使persistence.xml 上的数据动态化?我正在考虑在我的属性文件上添加一个数据库名称属性,然后创建表(如果不存在)。

这可能吗?

我正在使用 EclipseLink(JPA2.0) 和 MySQL。

4

2 回答 2

3

如果您在独立环境中使用 JPA,您可以将其他属性传递给Persistence.createEntityManagerFactory().

在应用服务器环境中,您可以使用从 JNDI 获得的数据源。

于 2011-04-11T12:16:27.320 回答
0

如果您使用的是弹簧,则可以使用弹簧property-placeholder-configurer机制来执行此操作。只需扩展您的 EclipseLink 供应商适配器:

public class ExtendedJpaVendorAdapter extends XJpaVendorAdapter {

    private Map<String, Object> vendorProperties;

    @Override
    public Map<String, Object> getJpaPropertyMap() {
        Map<String, Object> properties = super.getJpaPropertyMap();
        properties.putAll(vendorProperties);
        return properties;
    }

    public Map<String, Object> getVendorProperties() {
        return vendorProperties;
    }

    public void setVendorProperties(Map<String, Object> vendorProperties) {
        this.vendorProperties = vendorProperties;
    }

}

然后你可以在 spring xml 文件中配置这些。

于 2011-04-11T12:36:40.270 回答