是否可以在运行时提取持久性单元配置信息?

时间:2012-10-01 21:23:27

标签: java database hibernate java-ee jpa

我正在开发一个应用程序(使用JPA / Hibernate,Servlet,JSP,没有框架的Java EE),我发现在特定模块中,更容易实现本机SQL(而不是使用ORM直接解决方案)。完全没问题,但我想让它动态制作,即:我希望我的代码能够防止我更改持久性提供程序。

我想做类似的事情:

MySpecificQueryMakerInterface myQueryMaker = new MySpecificQueryMakerFactory(EntityManager.getPersistenceUnit().getProvider());

MySpecificQueryMakerFactory,中创建适当的类,它将为我正在使用的当前数据库执行本机SQL。这样做,我将能够创建将MySpecificQueryMakerInterface扩展MyPostgresQueryMakerMyOracleQueryMaker的类,并且只有在添加新的特定数据库时才会更改工厂。

有没有办法使用JPA / Hibernate获取持久性单元/数据源的信息?

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是在持久性单元中指定一个自定义属性(例如类名),您可以通过EntityManagerFactory#getProperties()访问该属性。您可以通过EntityManager#getEntityManagerFactory()来获取工厂。