0

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

我想做类似的事情:

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

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

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

4

1 回答 1

0

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

于 2012-10-01T23:56:28.207 回答