如何编写web.xml和persistence.xml以将Java EE连接到DB Server

问题描述 投票:0回答:1

我的目标很简单-创建一个空的Maven,在pom中下载-javaee-api,然后将该简单的maven EE项目连接到数据库服务器-当前是本地计算机的MySLQ服务器。我还旨在使其保持简单-仅使用放置了DataSource详细信息的web.xml和提及我的DataSource的persistence.xml。我真的很想保持简单-因此,我不想在persistence.xml中放置任何jpa提供程序,因为我想在部署于其上的任何应用程序服务器中使用该提供程序。我现在确实想显式地使用Hibernate,我想要一个将在应用程序服务器上使用默认持久性提供程序的应用程序。但是我下载了mysql-connector-java(也作为maven依赖项)。我创建了一个简单的实体,并运行了该项目。我正在使用IntelliJ,我在Tomcat 8 alles gut上部署,但是..在数据库中未创建任何表。

很抱歉,我提供了一些混乱的解释,但是经过5个小时的战斗和头痛之后,这是我能做到的最好的方法。我还为您提供了我的web.xml,persistence.xml,pom.xml,甚至我的Entity类...

请好心人帮助我将如此简单的应用程序连接到MySQL Server。

也请先遍历我的其他内容-请仔细阅读我所需要的,我不想通过方法进行连接等。我想完全按照自己的意愿进行操作。我想要-这样!

这是pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>rado</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>war</packaging>
    <build>
           <plugins>
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-compiler-plugin</artifactId>
                   <version>3.7.0</version>

                   <configuration>
                       <source>8</source>
                       <target>8</target>
                   </configuration>
               </plugin>
           </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.14</version>
        </dependency>

    </dependencies>

</project>
enter code here

这是我的web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <data-source>
        <name>java:app/rocky/myCon</name>
        <class-name>com.mysql.jdbc.Driver</class-name>
        <url>jdbc:mysql://localhost:3306/rocky</url>
        <user>root</user>
        <password>****</password>
    </data-source>

</web-app>

这是persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1">

    <persistence-unit name="pu" transaction-type="JTA">
        <jta-data-source>java:app/rocky/myCon</jta-data-source>
    </persistence-unit>

</persistence>

这是我唯一的实体

package entities;

import javax.persistence.*;

@Entity
@Table(name =  "employees")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;

    public Employee() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
mysql connection web.xml persistence.xml java-ee-8
1个回答
0
投票

您需要部署到JavaEE或JakartaEE应用服务器,例如TomEE,GlassFish,Payara,WildFly,... Tomcat不是完整的JavaEE服务器,它不支持使用持久性即​​需的JPA .xml和JPA实体。

理论上,您可以将休眠模式添加到Tomcat或应用程序中,但是我不确定它是否可以正常工作。相反,如果您想使用Tomcat,请使用TomEE,它基于Tomcat,但是添加了所有缺少的JavaEE组件,并且一切正常。

否则,您的代码看起来不错。

© www.soinside.com 2019 - 2024. All rights reserved.