如何在 maven 项目中使用jpa,以hibernate为例
源码:https://github.com/recheloo/test-hibernate-jpa
1、创建一个 maven 项目,并导入所需依赖
<?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>com.lin</groupId>
<artifactId>test-hibernate-jpa</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jackson.version>2.8.3</jackson.version>
<java.version>1.8</java.version>
</properties>
<name>test-hibernate-jpa</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.7.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.7</version>
</dependency>
</dependencies>
</project>
2、创建配置文件,创建的文件名称为:persistence.xml,并且目录必须是在:classpath/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/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="mysql-jpa">
<class>Student</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://192.168.0.167:3306/bar" />
<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>
3、创建实体类,与数据库中的表对应起来 student.java
import lombok.Data;
import javax.persistence.*;
/**
* Created by lzx on 2019/10/24.
*/
@Data
@Entity //@Entity注解,指定该实体类是一个基于JPA规范的实体类
@Table(name = "tb_student") //@Table注解,指定当前实体类关联的表
public class Student {
@Id //@Id注解:声明属性为一个OID属性
@GeneratedValue(strategy = GenerationType.IDENTITY) //@GeneratedValue注解,指定主键生成策略
@Column(name = "stu_id") //@Column注解,设置属性与数据库字段的关系,如果属性名和表的字段名相同,可以不设置
private long stuId;
@Column(name="stu_name")
private String stuName;
@Column(name="stu_age")
private Integer stuAge;
@Column(name="stu_password")
private String stuPassword;
}
4、创建jpa的工具类 JPAUtils.java
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
* Created by lzx on 2019/10/24.
*/
public class JPAUtils {
public static EntityManagerFactory emf = createEntityManagerFactory();
private static EntityManagerFactory createEntityManagerFactory(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("mysql-jpa");
return emf;
}
public static EntityManager getEntityManger(){
EntityManager entityManager = emf.createEntityManager();
return entityManager;
}
}
5、创建测试类,运行,运行成功后,数据库中会出现创建的表以及添加的数据 StudentDAOTest.java
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
/**
* Created by lzx on 2019/10/24.
*/
public class StudentDAOTest {
@Test
public void persist() {
//1.获得实体管理类
EntityManager manager = JPAUtils.getEntityManger();
//2、获取事物管理器
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
//3、创建实体对象
Student s = new Student();
s.setStuName("张三");
s.setStuAge(18);
s.setStuPassword("zj");
//4、保存到数据库
manager.persist(s);
//5、提交事物
transaction.commit();
//6、关闭资源
manager.close();
}
}
结果:数据库会自动创建下图的表,并且存入相应数据