JPA---Eclipselink JPA(JPA规范的实现者)
技术选型: idea + eclipselinkjpa + mysql8.0.13
1.创建idea maven工程,添加依赖:
4.0.0
com.atsico
eclipselinkjpa
1.0-SNAPSHOT
<repositories> <repository> <id>oss.sonatype.org</id> <name>OSS Sonatype Staging</name> <url>https://oss.sonatype.org/content/groups/staging</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.5.0-RC1</version> <exclusions> <exclusion> <groupId>org.eclipse.persistence</groupId> <artifactId>commonj.sdo</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.13</version> </dependency> </dependencies>
2.配置persistence.xml(注意该配置文件路径存放的位置)
<?xml version="1.0" encoding="UTF-8"?> org.eclipse.persistence.jpa.PersistenceProvider com.atsico.pojo.Employee com.atsico.pojo.Address<properties> <!-- 连接数据库的基本信息 --> <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb?useSSL=false&serverTimezone=Asia/Shanghai" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="root" /> <property name="eclipselink.logging.level" value="all" /> <property name="eclipselink.ddl-generation" value="create-or-extend-tables" /> <property name="eclipselink.show_sql" value="true" /> </properties> </persistence-unit>
3.实体类:
package com.atsico.pojo;
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private int e_pincode; private String e_city; private String e_state; public Address() { } public Address(int e_pincode, String e_city, String e_state) { this.e_pincode = e_pincode; this.e_city = e_city; this.e_state = e_state; } public int getE_pincode() { return e_pincode; } public void setE_pincode(int e_pincode) { this.e_pincode = e_pincode; } public String getE_city() { return e_city; } public void setE_city(String e_city) { this.e_city = e_city; } public String getE_state() { return e_state; } public void setE_state(String e_state) { this.e_state = e_state; } @Override public String toString() { return "Address{" + "e_pincode=" + e_pincode + ", e_city='" + e_city + '\'' + ", e_state='" + e_state + '\'' + '}'; }
}
package com.atsico.pojo;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
public class Employee {
@Id @GeneratedValue(strategy = GenerationType.AUTO) private int e_id; private String e_name; @ElementCollection private Set<Address> address = new HashSet<Address>(); public Employee() { } public Employee(String e_name, Set<Address> address) { this.e_name = e_name; this.address = address; } public int getE_id() { return e_id; } public void setE_id(int e_id) { this.e_id = e_id; } public String getE_name() { return e_name; } public void setE_name(String e_name) { this.e_name = e_name; } public Set<Address> getAddress() { return address; } public void setAddress(Set<Address> address) { this.address = address; } @Override public String toString() { return "Employee{" + "e_id=" + e_id + ", e_name='" + e_name + '\'' + ", address=" + address + '}'; }
}
4.测试类
package com.atsico.service;
import com.atsico.pojo.Address;
import com.atsico.pojo.Employee;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Jpa_Colloection_Test {
public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistUnit"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Address a1 = new Address(); a1.setE_pincode(1); a1.setE_city("朝阳"); a1.setE_state("北京"); Address a2 = new Address(); a2.setE_pincode(2); a2.setE_city("丰台"); a2.setE_state("北京"); Employee e1 = new Employee(); e1.setE_name("ZhangYan"); e1.getAddress().add(a1); Employee e2 = new Employee(); e2.setE_name("LiuKai"); e2.getAddress().add(a2); em.persist(e1); em.persist(e2); em.getTransaction().commit(); em.close(); emf.close(); }
}
5.运行ok
6.运行过程中遇到的问题:
[main] ERROR - No Persistence provider for EntityManager named myPersistUnit
javax.persistence.PersistenceException: No Persistence provider for EntityManager named myPersistUnit at javax.persistence.Persistence.createEntityMa nagerFactory(Persistence.java:89)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
解决办法:idea中配置文件的路径设置问题,正确路径:
src\main\resources\META-INF\persistence.xml
注意注意注意:找出问题的关键在于多看看官方文档
- jpa之eclipselink2.1之myeclipse10.0环境下配置实现
- jpa之eclipselink2.1之myeclipse10.0环境下配置实现
- Eclipselink JPA 使用小结
- EclipseLink/Features/JPA
- JPA之Eclipselink--》查询符合条件的数据总量
- EclipseLink JPA2.1 jar-file多项目使用说明
- 续2:在Spring JPA中使用 Eclipse Link实现
- 关于JPA EclipseLink中 刷新缓存的问题(处女作)
- JPA 实现比较:Hibernate、Toplink Essentials、OpenJPA、Eclipselink
- JPA(EclipseLink)基本配置一
- Maven + EclipseLink实现的简单JPA例程
- 续:在RAD中配置JPA(EclipseLink): Java EE环境
- JPA,EclipseLink 缓存机制学习——树节点搜索问题引发的思考
- [转] JPA 2.0 with EclipseLink - 教程
- Maven + EclipseLink实现的简单JPA例程
- eclipse下用link方式安装maven 插件失败
- 实战记录:从EclipseLink迁移到Hibernate上(2)调试错误
- Eclipse代码格式化规范
- Eclipse过滤多余无用的Link文件和文件夹
- Intellij IDEA启动eclipse l 3ff0 ink source(link )项目(项目依赖)引用其他项目的类