Eclipse JPA Project创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/85341678

JPA 是什么?

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

关于Eclipse Link

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

3.在Eclipse中建立 JPA项目

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

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

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

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

在这里插入图片描述

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

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

  2. 连接不同的数据库, 需要下载对应的驱动, 自动导入到项目的路径中

  3. 从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>

基于注解的映射是JPA较为常见的方式,如有已经有类或是习惯hibernate早期XML的映射配置, 要使用 XML的方式配置映射,选择 EclipseLink下面的Dynamic Entities from Tables 导出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="int">
			</id>
			<basic name="name" attribute-type="String">
			</basic>
		</attributes>
	</entity>
</entity-mappings>

2.会把产生的文件添加到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="jpa">
		<mapping-file>META-INF/eclipselink-orm.xml</mapping-file>
	</persistence-unit>
</persistence>

要运行测试的话, 需要做一些改动, 以 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. 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. 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;
    }
}

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();

    }

}

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


请再驻足一分钟,并帮忙点击一下鼠标。

博主正在参加2018博客之星评选,如果本博客有帮到您或是有缘看到这篇的话,请帮忙投一下 180 号, oscar999。
投票地址:https://bss.csdn.net/m/topic/blog_star2018
感激之致,顺祝新年快乐!

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/85341678