使用tomcat的连接池和JPA

mak*_*aks 3 tomcat jpa

我想在我运行在tomcat.Earlier上的web应用程序中使用带JPA/TopLink的连接池我使用jdbc的Connection和Statement类来操作数据库中的数据; 以这种方式使用连接池我只需在context.xml中声明资源并在应用程序中获取此资源:

Context c = new InitialContext();
DataSource source = (DataSource) ((Context)c.lookup("java:comp/env")).lookup("jdbc/MySource");
Run Code Online (Sandbox Code Playgroud)

现在我想用JPA这样的连接池.我怎样才能做到这一点?

还有一个问题:我在一些例子中看到reosurce在context.xml中声明,然后在<resource-ref>中的web.xml中声明.为什么我应该在不同的地方声明它或者它是相同的声明,我的意思是它相当于context.xml中的声明?

Bal*_*usC 6

现在我想用JPA这样的连接池.我怎样才能做到这一点?

假设您已经<Resource>在a中声明了连接池数据源创建context.xml,那么您只需要在webapp中声明JPA的数据源用法/META-INF/persistence.xml.

<persistence-unit name="YourPersistenceUnit" transaction-type="JTA">
    <jta-data-source>jdbc/MySource</jta-data-source>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

还有一个问题:我已经看到了reosurce在宣布一些例子context.xml,然后将其宣布web.xml<resource-ref>.为什么我应该在不同的地方宣布它或者它是相同的声明,我的意思是它是否相当于声明context.xml

<Resource>一个在context.xmldefinies的创作由servletcontainer的数据源.它可以被多个webapps使用.在<resource-ref>一个在web.xmldefinies中使用的数据源的由特定的Web应用程序.注意:使用JPA时,您不需要使用JPA web.xml.它进入了persistence.xml.