使用JPA从现有数据库中检索信息

时间:2017-03-22 17:09:06

标签: java jsp jpa eclipselink persistence

我正在使用JPA(EclipseLink)开发Java Web Project来连接我们的数据库。我有一个持久性单元,我在其中配置数据库将保留数据。问题是我还必须访问另一个已经创建并填充了信息的数据库,我只想访问该数据库的一个表来检索一些信息。如何使用JPA访问它只是为了检索信息(既不保存也不更新任何东西)。

2 个答案:

答案 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:对不起任何错误。

我希望这会对你有所帮助。 干杯