围绕JDBC资源和JDBC连接池Glassfish的一些混淆

时间:2011-10-14 19:35:07

标签: java java-ee jpa glassfish

我即将建立与数据库的连接,我正在使用EJB和JPA。我最近开始做这些技术所以我有一些问题在这一点上理解这一切:) 我知道需要persistence.xml才能使用JPA。我知道,这是我配置如何连接数据库的文件。然而,似乎有多种方法可以做到这一点。

在persistence.xml文件和Glassfish中定义属性(如用户名,数据库,密码等)会有什么区别(或者我应该何时使用另一种替代方案?)?优点/缺点,如果有的话。

在我发布的图像下面,我有JDBC资源和JDBC连接池。我对这两个术语感到困惑。为什么我们不在JDBC Resources中添加用户名,数据库,密码等属性?有人可以解释它们之间的区别和它们的含义吗?

  

JDBC资源

     

JDBC资源(数据源)为应用程序提供了一种方法   连接到数据库。通常,管理员创建JDBC   部署在a中的应用程序访问的每个数据库的资源   域。 (但是,可以为a创建多个JDBC资源   数据库。)   http://download.oracle.com/docs/cd/E19316-01/820-4335/ablih/index.html

我觉得很奇怪,我们在池中添加了这些属性,但没有在资源中添加,但我可能会误解这些概念。

enter image description here

1 个答案:

答案 0 :(得分:6)

在“JDBC连接池”中,您可以创建容器管理的JDBC数据源(具有连接池功能)。数据源至少需要知道JDBC驱动程序,JDBC URL,用户名和密码。

在“JDBC资源”中,您可以将这些容器管理的JDBC数据源绑定到一个或多个JNDI名称,以便它们可以通过部署的Web应用程序使用JNDI。

persistence.xml中,您可以指定是使用本地数据源还是使用容器管理数据源。如果要使用容器托管数据源,则应指定其JNDI名称。使用容器托管数据源的优点是,您可以在多个Web应用程序之间共享单个数据源。对于JPA,它还有一个优点,即您可以使用JTA(容器管理的事务),这样您就不需要调用transaction.begin()commit()rollback()等各种方法。