当前位置: 首页 > 知识库问答 >
问题:

如何在Java EE环境(Tomcat+JSF)中调整persistence.xml文件将JPA连接到JDBC/MySQL数据库

饶明亮
2023-03-14
jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=password

但现在我正在Java EE上学习JPA。

在“Pro JPA2 Mastering the Java trade Perression API”一书的第3章“打包它”一段中,您可以读到:

在Java EE环境中,可以省略Java SE的persistence.xml文件中所需的许多属性。在清单3-32中,您可以看到清单2-11中的persistence.xml文件被转换为Java EE应用程序的一部分进行部署。我们现在声明实体管理器应该使用数据源名称“JDBC/employees”,而不是用于创建连接的JDBC属性。如果数据源被定义为在应用程序命名空间中可用,而不是本地组件命名上下文中可用,那么我们可以使用数据源名称“java:app/jdbc/employees”。transaction-type属性也被删除,以允许持久性单元默认为JTA。应用程序服务器会自动找到实体类,因此连类的列表都被移除了。此示例表示理想的最低Java EE配置。因为使用此持久性单元的业务逻辑是在无状态会话bean中实现的,所以persistence.xml文件通常位于相应的EJB JAR的META-INF目录中。

<persistence>
    <persistence-unit name="EmployeeService">
        <jta-data-source>jdbc/EmployeeDS</jta-data-source>
    </persistence-unit>
</persistence>
<persistence>
    <persistence-unit name="EmployeeService" transaction-type="RESOURCE_LOCAL">
        <class>examples.model.Employee</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527 EmpServDB;create=true"/>
            <property name="javax.persistence.jdbc.user" value="APP"/>
            <property name="javax.persistence.jdbc.password" value="APP"/>
        </properties>
    </persistence-unit>
</persistence>

我的问题是:我如何在Java EE环境中修改一个通用的persistence.xml文件,以便使用我在文章顶部输入的属性连接到MySQL/JDBC数据库?

共有1个答案

长孙明知
2023-03-14

给出的示例需要JTA和Java事务API。它将把事务管理委托给容器。启用JTA后,如果您使用的是@statelessEJB,那么在默认情况下,单个方法调用被视为单个完整的事务。这允许您编写干净的代码,而不需要任何tx.begin、tx.commit、tx.rollback等样板。

与JSF、EJB和JPA一样,默认情况下,JTA不能在Tomcat和Jetty这样的纯JSP/Servlet容器上使用。与JSF、EJB和JPA一样,您需要在Tomcat上单独安装JTA。

另一种选择是从JSP/Servlet容器切换到真正的Java EE(web配置文件)容器,如Glassfish、JBoss as和Tomee。它直接提供了与Java EE相关的所有内容。请注意,JBoss AS和TomEE基本上都在暗中使用Tomcat的JSP/Servlet引擎。

 类似资料:
  • 关于这个设置,我有几个问题: > 我的应用程序(Spring/Hibernate)每个用户有一个不同的数据库。所以这里的问题是数据源(使用spring和hibernate来实现持久性)是在Tomcat级别创建的。因此,无论我做什么连接池都是在服务器级别。 根据集群配置,Tomcat实例将创建它们自己的连接池。

  • 这是我的实体 这是我的主课 这就是我的persistence.xml 堆栈跟踪:

  • 主要内容:JSF + MySQL JDBC实例我们可以将JSF应用程序集成到jdbc。 JDBC可将数据存储到数据库表中。在本教程中,我们创建一个应用程序并创建jdbc连接来存储用户输入的数据。 JSF + MySQL JDBC实例 打开 NetBeans IDE,创建一个名称为:JdbcConnectivity 的 Web 工程,其目录结构如下所示 - 提示: 需要加入 Jar包。 此应用程序包含用户输入表单,委托bean和响应页面,如以下

  • null 任何想法都将受到赞赏。

  • 我正在尝试使用SpringBoot连接MySQL数据库,但我遇到以下错误: 应用程序无法以类路径启动:[文件:/C:/Dev/Repositorios/jira quality/target/classes/,文件:/C:/Users/jboscod/.m2/repository/mysql/mysql连接器java/8.0.21/mysql-connector-java-8.0.21.jar,文

  • 问题内容: 在PHP中执行类似的操作,我可以成功登录到MySQL服务器。我已经安装了ODBC连接器。但是在上面的VBA代码中,我失败了。出现错误。(请参阅存在错误的代码) 问题答案: Ranjit的代码导致了与Tin报告相同的错误消息,但是在使用我正在运行的ODBC驱动程序更新Cn.open之后起作用。检查“ ODBC数据源管理器”中的“驱动程序”选项卡。我的说“ MySQL ODBC 5.3 U