了解JPA中的Persistence.xml

Luc*_*uke 4 java ejb jpa persistence.xml java-ee

我正在尝试了解以下内容:

当我创建EJB项目并将其部署到Glassfish时,我是否在Glassfish的管理员中心设置JDBC资源/连接池,还是在persistence.xml中添加了用户名,密码等所有不同的属性?我一点都不明白。

我不明白为什么我们既有JDBC资源又有JDBC连接池。这是什么,它们之间有什么区别?有人可以向我解释这些事情还是/并且提供有关persistence.xml文件及其周围部分的良好链接?

DaT*_*oop 5

最好定义一个JDBC资源,而不是将信息放在persistence.xml中。这样,您将可以利用连接池。您将在persistence.xml中定义为JDBC资源提供的JNDI名称。

这是什么,它们之间有什么区别

下面,我粘贴了Glassfish 3.x帮助的某些部分。看看这个。真的很有帮助

JDBC连接池

JDBC连接池包含一组在注册连接池时创建的JDBC连接

JDBC资源

Java数据库连接(JDBC)资源(数据源)为应用程序提供了连接数据库的方法。通常,管理员为域中部署的应用程序访问的每个数据库创建JDBC资源。但是,可以为一个数据库创建多个JDBC资源。

通过在Java命名和目录接口(JNDI)API树上查找数据源,然后请求连接,应用程序可以从连接池中获得数据库连接。与数据源关联的连接池提供了与应用程序的连接。

将数据源(JDBC)资源视为某种数据服务(连接池)外观的工厂。在这种情况下,它隐式地从池中获取连接并将其提供给您的应用程序。

一个示例persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="WebApplication2PU" transaction-type="JTA">
    <jta-data-source>jdbc/sample</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

这行是我为JDBC资源指定的JNDI名称:

 <jta-data-source>jdbc/sample</jta-data-source>
Run Code Online (Sandbox Code Playgroud)

您无需通过这种方式在persistence.xml中定义与数据库连接相关的任何内容……只需资源的JNDI名称