我正在使用JPA(EclipseLink)开发Java Web Project来连接我们的数据库。我有一个持久性单元,我在其中配置数据库将保留数据。问题是我还必须访问另一个已经创建并填充了信息的数据库,我只想访问该数据库的一个表来检索一些信息。如何使用JPA访问它只是为了检索信息(既不保存也不更新任何东西)。
答案 0 :(得分:1)
设置实体管理器后,您只需运行本机查询:
entityManager.createNativeQuery("SELECT ...");
答案 1 :(得分:1)
因此,您可以创建另一个持久单元poiting到您的其他数据库
<persistence-unit name="read-and-write-database">
...
<properties>
<!-- conection -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/database-write" />
<.../>
</properties>
</persistence-unit>
<persistence-unit name="read-database">
...
<properties>
<!-- conection -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/database-read" />
<.../>
</properties>
</persistence-unit>
而且,在SE环境中,您可以创建EntityManager:
EntityManagerFactory readWriteEntityManagerFactory = Persistence.createEntityManagerFactory("read-and-write-database");
EntityManager readWriteEntityManager = readWriteEntityManagerFactory.createEntityManager();
EntityManagerFactory readEntityManagerFactory = Persistence.createEntityManagerFactory("read-database");
EntityManager readEntityManager = readEntityManagerFactory.createEntityManager();
如果您在容器中,PersistenceContext anotation具有可用于定义persistente-unit的unitName field
请记住,通过这样做,您将拥有两个不同的持久性上下文。因此,在其中一个中做出的改变,不会是&#34;可见&#34;到另一个,直到数据的持久性。
obs:对不起任何错误。
我希望这会对你有所帮助。 干杯