一.JPA的概念
为了节省时间,更加具体的解释我们就略过吧。
二.在IDEA中使用JPA
2.1.添加JAP依赖
添加相关的maven依赖
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><hibernate.version>5.2.17.Final</hibernate.version><goda.time.version>2.9.9</goda.time.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- jdbc驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.10.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.3.10.Final</version></dependency><dependency><groupId>org.hibernate.javax.persistence</groupId><artifactId>hibernate-jpa-2.1-api</artifactId><version>1.0.0.Final</version></dependency><dependency><groupId>org.hibernate.common</groupId><artifactId>hibernate-commons-annotations</artifactId><version>4.0.5.Final</version></dependency><!--持久化依赖--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${goda.time.version}</version></dependency><dependency><groupId>org.jadira.usertype</groupId><artifactId>usertype.core</artifactId><version>6.0.1.GA</version></dependency><dependency><groupId>antlr</groupId><artifactId>antlr</artifactId><version>2.7.7</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.jboss</groupId><artifactId>jandex</artifactId><version>1.1.0.Final</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.18.1-GA</version></dependency><dependency><groupId>org.jboss.logging</groupId><artifactId>jboss-logging</artifactId><version>3.1.4.GA</version></dependency><dependency><groupId>org.jboss.logging</groupId><artifactId>jboss-logging-annotations</artifactId><version>1.2.0.Beta1</version><scope>provided</scope></dependency><dependency><groupId>org.jboss.spec.javax.transaction</groupId><artifactId>jboss-transaction-api_1.1_spec</artifactId><version>1.0.0.Final</version></dependency><dependency><groupId>javax.ejb</groupId><artifactId>ejb-api</artifactId><version>3.0</version></dependency></dependencies>
2.2.配置JPA运行环境
在IDEA中,resources文件夹下,也就是资源文件夹下,创建META-INF文件夹,在该文件夹下创建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/persistencehttp://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"><persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL"><properties><property name="javax.persistence.jdbc.driver"value="com.mysql.jdbc.Driver" /><property name="javax.persistence.jdbc.url"value="jdbc:mysql://localhost:3306/jpa" /><property name="javax.persistence.jdbc.user" value="root" /><property name="javax.persistence.jdbc.password" value="root" /><property name="hibernate.dialect"value="org.hibernate.dialect.MySQL5Dialect" /><property name="hibernate.show_sql" value="true" /><property name="hibernate.hbm2ddl.auto" value="update" /></properties></persistence-unit></persistence>
如下:
2.3.创建表
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2.4.在IDEA中配置数据源
在IDEA的右边有Database,按以下步骤操作即可。
这里也可以不配置,配置之后,可以在IDEA中直接看到数据库中的表,并且之后再IDEA中写的代码也不用有警告。
添加你的数据库名字,第一次配置下边会提示你下载插件,很具提示即可。
2.5.测试
创建User类
package com.hly.jpa.model.oneToOne;import javax.persistence.*;
/*** @author :hly* @github :github.com/SiriusHly* @blog :blog.csdn.net/Sirius_hly* @date :2018/9/27*/
@Entity
//指定表名,指定唯一约束
@Table(name = "user",uniqueConstraints = {@UniqueConstraint(columnNames = {"id","name"})})
public class User {@Id//指定主键@GeneratedValueprivate int id;@Columnprivate String name;@Columnprivate String password;//一对一映射@OneToOne(optional = true, cascade = CascadeType.ALL)@JoinColumn(name = "articleId", unique = true)public Article article;//省略了getter和setter
}
/*** 获取应用管理的EntityManager*/@Testpublic void testApplicationEntityManager() {EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("MyJPA");EntityManager em = entityManagerFactory.createEntityManager();em.getTransaction().begin();User user = new User();user.setName("hly");//以上两行为新建状态//托管状态em.persist(user);//事务提交或调用flush()方法后会同步到数据库em.getTransaction().commit();//根据主键获取对象//System.err.println(em.find(User.class,1));//System.err.println(em.getReference(User.class,1));em.close();entityManagerFactory.close();}
数据库中插入数据则成功。
2.6.EntityManager接口
2.7.实体类中注解的含义
2.8.代码及地址思维导图
完整代码在笔者的github,欢迎访问。
清晰思维导图分享地址为:JPA思维导图