* jpa操作步骤
* 1.加载配置文件创建工厂(试题管理类工厂)对象
* 2.通过实体管理类工厂获取实体管理器
* 3.获取事务对象,开启事务
* 4.完成CRUD操作
* 5.提交事务,回滚
* 6.释放资源
配置文件xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!-- 持久化单元
name:持久化单元名称
transaction-type:事务管理方式
JPA:分布式事务管理
RESOURCE_LOCAL:本地事务管理
-->
<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!-- jpa实现方式-->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- 数据库信息-->
<properties>
<!-- 数据库信息
用户名,密码驱动
-->
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="123123"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:///tomcat?serverTimezone=UTC"/>
<!-- 可选配置:配置jpa实现方(hibernate)的配置信息
1.显示sql
2.自动创建数据库表
create:程序运行时创建数据库表(如果有表先删除表再创建)
update:程序运行时创建表,如果有表,不会创建表
none:不会创建表
-->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.quto" value="update"/>
</properties>
</persistence-unit>
</persistence>
实体类:
package domain;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.persistence.*;
/**
* 客户的实体类
* 1.实体类和表的映射关系
* 2.实体类中属性和表中字段的映射关系
*/
@Entity //声明实体类
@Table(name = "student")
public class Customer {
@Id //主键 声明
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增
@Value("2")
Integer id;
@Column(name = "age")
String age;
String name;
String grade;
String sex;
public Customer() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Customer(String age, String name, String grade, String sex) {
this.id = id;
this.age = age;
this.name = name;
this.grade = grade;
this.sex = sex;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", age='" + age + '\'' +
", name='" + name + '\'' +
", grade='" + grade + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
测试类 测试方法
@org.junit.Test
public void TestSave(){
//加载配置文件,创建工厂 (实体管理器工厂) 对象
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myJpa");
//通过实体管理器工厂获取实体管理器
EntityManager entityManager = entityManagerFactory.createEntityManager();
//获取事务对象,开启事务
EntityTransaction tx = entityManager.getTransaction();//获取事务对象
tx.begin();//开启事务
// 4.完成CRUD操作
Customer customer = new Customer("20","张喜","大三","男");
//保存
entityManager.persist(customer);
//提交事务
tx.commit();
//释放资源
entityManager.close();
entityManagerFactory.close();
}
相关依赖
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- hibernate对jpa的支持包 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<!-- log日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- Mysql and MariaDB -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
文件结构