Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在运行时提取持久化单元配置信息?_Java_Database_Hibernate_Jakarta Ee_Jpa - Fatal编程技术网

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

Java 是否可以在运行时提取持久化单元配置信息?,java,database,hibernate,jakarta-ee,jpa,Java,Database,Hibernate,Jakarta Ee,Jpa,我正在开发一个应用程序(javaee使用JPA/Hibernate、Servlet、JSP、no框架),我发现在特定的模块中更容易实现原生SQL(而不是使用ormdirect解决方案)。完全没有问题,但我希望它能够动态生成,即:我希望我的代码能够防弹,以防我更改持久性提供程序 我想做一些类似的事情: MySpecificQueryMakerInterface myQueryMaker = new MySpecificQueryMakerFactory(EntityManager.getPersi

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

我想做一些类似的事情:

MySpecificQueryMakerInterface myQueryMaker = new MySpecificQueryMakerFactory(EntityManager.getPersistenceUnit().getProvider());
MySpecificQueryMakerFactory中,
创建适当的类,该类将为我正在使用的当前数据库执行本机SQL。这样,我将能够创建扩展
mySpecificQueryMaker接口
的类,如
MyPostgresQueryMaker
MyOracleQueryMaker
,并且我只会在添加新的特定数据库时更改工厂


有没有一种方法可以使用JPA/Hibernate获取持久化单元/数据源的信息

我认为最好的方法是在持久化单元中指定一个自定义属性(例如,类名),您可以通过该属性进行访问。你可以通过电话到工厂