Jpa的学习笔记
程序员文章站
2022-04-22 08:01:23
...
开始学习Jpa规范
第一步 导入jar包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate.c3p0</artifactId>
<version>5.0.7.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
第二步 在resources 新建META-INF文件新建persistence.xml
第三步 添加配置
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!--持久化单元 name:持久化单元名称 自定义
transaction-type:事物管理的方式
RESOURCE_LOCAL:本地事物管理 场景(表都存在本地数据库中)
JTA :分布式事物管理 场景(不同表存于不同数据库中)
-->
<persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL">
<!-- jpa的实现方式 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- 数据库信息-->
<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="123456"/>
<!-- 配置jpa实现方(hibernate)的配置信息
显示sql
参数 true false
自动创建数据库表 hibernate.hbm2ddl.auto
参数 create 程序运行时创建数据库表(如果数据库存在表,先删除在创建)
update 程序运行时创建数据库表(如果数据库存在表,则不创建)
none 不会创建表
-->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
第四步 基于注解编写实体类
package com.ahead.pojo;
import javax.persistence.*;
import java.util.Date;
@Table(name="custorm")
@Entity
public class Custorm {
/*
* @Id 声明主键的配置
*
* @GeneratedValue :配置主键生成策略
* GenerationType.IDENTITY 自增 mysql (底层数据库必须支持自动增长,对id自增)
* GenerationType.SEQUENCE 序列 oracle 底层数据库必须支持序列
* GenerationType.TABLE jpa提供的一种机制,通过一张数据表的形式帮助我们来完成主键自增
* GenerationType.AUTO 由程序自动帮助我们选择主键生成策略
* @Column 配置属性和数据库表中字段的映射
* name 数据库表中字段的名称
* */
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name="id")
private Integer id;
@Column(name="name")
private String name;
@Column(name="address")
private String address;
@Column(name="tel")
private String tel;
@Column(name="emaiil")
private String email;
@Column(name="create_date")
private Date createDate;
@Column(name="update_date")
private Date updateDare;
省略get和setter;
第六步
- 加载配置文件,创建工厂(实体管理类工厂)对象
- 通过实体管理类工厂获取实体管理器
- 获取事物对象
- 完成CRUD操作
- 提交事务(回滚事务)
- 释放资源
@Test
public void testSave(){
// 1 加载配置文件,创建工厂(实体管理类工厂)对象
// persistenceUnitName:持久化单元名称 --> 对应得是persistence.xml中配置的
EntityManagerFactory factory = Persistence.createEntityManagerFactory("JPA");
// 2 通过实体管理类工厂获取实体类管理器
EntityManager manager = factory.createEntityManager();
// 3 获取事物对象
EntityTransaction tx = manager.getTransaction();
//开启事物
tx.begin();
//4 完成增删查改操作
Custorm custorm=new Custorm();
custorm.setName("杨超越");
custorm.setTel("13980002828");
custorm.setAddress("北京市朝阳区");
custorm.setEmail("[email protected]");
custorm.setCreateDate(new Date());
//4 完成增删查改操作
//persist() save操作
manager.persist(custorm);
//5 提交事物(回滚事物)
tx.commit();
//6 释放资源
manager.close();
factory.close();
}
}
上一篇: jpa学习笔记——3
下一篇: SpringData JPA学习笔记