JPA persistence.xml

时间:2011-04-11 12:09:26

标签: java mysql jpa eclipselink persistence.xml

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

这可能吗?

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果您使用的是spring,则可以使用spring 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文件中配置它们。