搭建环境的过程
1.创建maven工程导入坐标
<dependencies><!--c3p0--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.5</version></dependency><!--Junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!--hibernate对Jpa的支持--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>5.0.7.Final</version></dependency><!--Log日志--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--MySQL and MariaDB--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency></dependencies>
2.需要配置Jpa的核心配置文件
位置:配置到类路径下一个叫做MATA-INF的文件夹下
命名:persistence.xml
<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"><!--需要配置persistent-unit节点持久化单元:name:持久化单元名称transaction-type:事务管理的方式JTA:分布式事务管理RESOURCE-LOCAL:本地事务管理--><persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL"><!--JPA的实现方式--><provider>org.hibernate.jpa.HibernatePersistenceProvider</provider><!--可选配置:配置JPA实现方的配置信息--><properties><!--数据库信息用户名,密码,驱动,数据库地址--><property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/><property name="javax.persistence.jdbc.url" value="jdbc:mysql:///springdata"/><property name="javax.persistence.jdbc.user" value="root"/><property name="javax.persistence.jdbc.password" value="ced51515151"/><!--配置JPA实现方(hibernate)的配置信息显示sql : true | false自动创建数据库表 : hibernate.hbm2ddl.autocreate : 程序运行时创建数据库表(如果有表,先删除再创建)update :程序运行时创建数据库表(如果有表,不会创建表)none :不会创建表--><property name="hibernate.show_sql" value="true"/><property name="hibernate.hbm2ddl.auto" value="create"/></properties></persistence-unit></persistence>
3.编写客户的实体类
4.配置实体类和表,类中属性和表中字段的映射关系
package com.cedric.domain;
import javax.persistence.*;
/**
* 客户实体类
* 配置映射关系:
* 1.实体类和表的映射关系
* 2.实体类中的属性和表中字段的映射关系
*
* @Entity : 声明实体类
* @Table : 配置实体类和表的映射关系
* name : 配置数据库表的名称
*/
@Entity
@Table(name = "cst_customer")
public class Customer {
/**
* @Id : 声明主键的配置
* @GeneratedValue:配置主键的生成策略
* strategy
* GenerationType.IDENTITY:自增,MySQL
* * 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增)
* GenerationType.SEQUENCE:序列,Oracle
* * 底层数据库必须支持序列
* GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增
* GenerationType.AUTO : 由程序自动帮助我们选择主键生成策略
* @Column:配置属性和字段的映射关系
* name:数据库表中的字段名称
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cust_id")
private Long custId; //客户的主键
@Column(name = "cust_name")
private String custName;//客户姓名
@Column(name = "cust_source")
private String custSource;//客户来源
@Column(name = "cust_level")
private String custLevel;//客户级别
@Column(name = "cust_industry")
private String custIndustry;//客户所属行业
@Column(name = "cust_phone")
private String custPhone;//客户联系方式
@Column(name = "cust_address")
private String custAddress;//客户地址
// setter and getter
// toString
}
5.保存客户到数据库中
package com.cedric.test;
import com.cedric.domain.Customer;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class JpaTest {
/**
* 测试Jpa的保存
* 案例:保存一个客户到数据库中
* Jpa的操作步骤
* 1.加载配置文件创建工厂(实体管理类工厂)对象
* 2.通过实体管理类工厂获取实体管理器
* 3.获取事务对象,开启事务
* 4.完成增删改查操作
* 5.提交事务(回滚事务)
* 6.释放资源
*/
@Test
public void testSave(){
//1.加载配置文件创建工厂(实体管理类工厂)对象
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理类工厂获取实体管理器
EntityManager entityManager = factory.createEntityManager();
//3.获取事务对象,开启事务
EntityTransaction transaction = entityManager.getTransaction();//获取事务对象
transaction.begin();//开启事务
//4.完成增删改查操作:保存一个客户到数据库中
Customer customer = new Customer();
customer.setCustName("张三");
customer.setCustIndustry("国防");
customer.setCustAddress("北京");
customer.setCustLevel("SVIP");
customer.setCustPhone("111");
//保存
entityManager.persist(customer);
//5.提交事务(回滚事务)
transaction.commit();
//6.释放资源
entityManager.close();
factory.close();
}
}
ii.完成基本的CRUD案例
persist : 保存
merge : 更新
remove : 删除
find/getReference : 根据id查询
