【问题标题】:Is it possible to extract persistence unit configuration information at runtime?是否可以在运行时提取持久性单元配置信息?
【发布时间】:2012-10-01 21:23:27
【问题描述】:

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

我想做这样的事情:

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

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

有没有办法使用 JPA/Hibernate 获取 Persistence Unit / Datasource 的信息?

【问题讨论】:

    标签: java database hibernate jakarta-ee jpa


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 2013-02-15
      • 2019-11-05
      • 2010-10-26
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多