我即将建立与数据库的连接,我正在使用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
我觉得很奇怪,我们在池中添加了这些属性,但没有在资源中添加,但我可能会误解这些概念。
答案 0 :(得分:6)
在“JDBC连接池”中,您可以创建容器管理的JDBC数据源(具有连接池功能)。数据源至少需要知道JDBC驱动程序,JDBC URL,用户名和密码。
在“JDBC资源”中,您可以将这些容器管理的JDBC数据源绑定到一个或多个JNDI名称,以便它们可以通过部署的Web应用程序使用JNDI。
在persistence.xml
中,您可以指定是使用本地数据源还是使用容器管理数据源。如果要使用容器托管数据源,则应指定其JNDI名称。使用容器托管数据源的优点是,您可以在多个Web应用程序之间共享单个数据源。对于JPA,它还有一个优点,即您可以使用JTA(容器管理的事务),这样您就不需要调用transaction.begin()
,commit()
,rollback()
等各种方法。