当前位置:   article > 正文

Eclipse JPA Project创建

jpa project

JPA 是什么?

Java Persistence API, Java持久化接口。
是官方的数据访问的规范和接口。
针对此接口, 有不同的实现。比如: Hibernate, Top Link(Eclipse Link)

关于Eclipse Link

来源于TopLink, TopLink是Oracle提供的数据接口的实现,应用在 Weblogic的应用服务器上。 后来捐给了 Eclipse, Eclipse很高兴的发扬光大, 改了个名字, 而且很自然的集成到 Eclipse的IDE中了。

在Eclipse中建立 JPA项目

  1. File->New->Other
  2. 找到JPA目录下的 JPA Project
    在这里插入图片描述

3.下一步直到出现如下页面
在这里插入图片描述

因为JPA只是接口, 所以需要下载实现。 点击下载按钮, 下载之后会出现如上效果。

下面有一个 Add connection,可以添加数据库连接, 有连接之后后面就可以把数据库的表导出为实体类。

在这里插入图片描述

这里不添加也可以在项目创建完成之后,在右键单击项目进入属性页面的 JPA中设置。

  1. 点击Finish创建完成, 目录结构如下:
    在这里插入图片描述
    默认会创建一个persistence.xml的配置文件。

从表导出JPA注解映射的实体类

在项目运行的时候,连接不同的数据库, 需要下载对应的驱动, 并导入到项目的路径中

从Table导出实体类的方式:
右键  New 选择JPA Entities from Tables
在这里插入图片描述

导出的是基于注解的类, 类的映射会自动加到persistence.xml。
这里导出的是User 表,表很简单,只有id和name两个属性。 默认导出到 model包下

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="jpa">
		<class>model.User</class>
	</persistence-unit>
</persistence>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

从表导出XML映射

基于注解的映射是JPA较为常见的方式,如有已经有类或是习惯hibernate早期XML的映射配置, 要使用 XML的方式配置映射,选择 EclipseLink下面的Dynamic Entities from Tables 导出XML的映射。

1.会产生配置文件: eclipselink-orm.xml

<?xml version="1.0" encoding="UTF-8"?> select u from User u

2.会把产生的文件添加到persistence.xml

  • 1
  • 2
  • 3
<?xml version="1.0" encoding="UTF-8"?> META-INF/eclipselink-orm.xml ```

要运行测试的话, 需要做一些改动, 以 XML为例,附上改动后完整的代码:

  1. eclipselink-orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1" xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_1.xsd">
    <named-query name="User.findAll">
        <query>select u from User u</query>
    </named-query>
	<entity class="model.User" access="VIRTUAL">
		<attributes>
			<id name="id" attribute-type="String">
			</id>
			<basic name="name" attribute-type="String">
			</basic>
		</attributes>
	</entity>
</entity-mappings>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="jpaProj">
		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
		<mapping-file>META-INF/eclipselink-orm.xml</mapping-file>
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/ssmi?serverTimezone=UTC" />
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.user" value="root" />
			<property name="javax.persistence.jdbc.password" value="123456" />
		</properties>
	</persistence-unit>
</persistence>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. User.java
public class User {
    private String id;

    private String name;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4.JpaDemo.java

public class JpaDemo {

    /**
      * @Title: main
      * @Description: TODO
      * @param args
      */

    public static void main(String[] args) {
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpaProj");
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        entityManager.getTransaction().begin();
        
       // List<User> result = entityManager.createNamedQuery("User.findAll").getResultList();
        List<User> result = entityManager.createQuery("select u " + "from User u ").getResultList();
        for (User user : result) {
            System.out.println(user.getName());
        }
        
        entityManager.getTransaction().commit();
        entityManager.close();

    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

注意: 类和表的名字保持一致。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/321259
推荐阅读
相关标签
  

闽ICP备14008679号