1.1 jpa 是一个开发规范 是一个ORM框架的开发规范 是SUN 公司定义的 中文名:JAVA持久层API

​ orm : 对象关系映射 是一个解决问题的思路 对对象的操作就是对数据库的操作

​ 1.2 jpa 的优势

​ 标准化

​ 容器级特性的支持

​ 简单方便

​ 操作简单 创建类跟 创建java普通类一样方便 只需使用javax.persistence.Entity注释

​ 查询能力

支持继承 支持多态

2 什么是SpringDataJPA

​ Spring Data JPA框架主要针对的是Spring 唯一没有简化到业务逻辑代码 开发者连仅实现持久层业务逻辑的工作都省了,唯一要做的就是生明持久层的接口 其它的都交给Spring Data JPA来帮完成

​ 并不是JPA规范实现 基于原生的jpa 的api 进行了再次的封装

​ 如果要使用SpringDataJpa 还需要使用Hibernate

创建maven工程

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.hibernate.version>5.0.7.Final</project.hibernate.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--hibernate 对jpa的支持-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${project.hibernate.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>



在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="myjpa" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/数据库名"/>
<!--配置hibernate的属性-->
<property name="hibernate.show_sql" value="true"></property>
<!--sql语句是否格式化-->
<property name="hibernate.format_sql" value="true"/>
<!--是否自动创建数据库表
value 可选值 create update none
create 程序自动创建数据库表 如果表存在 先删除后创建
update 程序自动创建数据库表 如果表存在 不创建
none 不会创建
-->
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
entity包
package cn.dy.jpa.entity;

import javax.persistence.*;

/**
* author:dingyi
* time:2019/8/14 0014 16:00
*/
@Entity
@Table(name="cust_stu")
public class Stu {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "Id")
private Long Id;
@Column (name="name")
private String name;
@Column(name = "age")
private Integer age;
@Column(name = "sex")
private String sex;

@Override
public String toString() {
return "Stu{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}
}
测试类:

import cn.dy.jpa.entity.Stu;
import org.junit.Test;

import javax.persistence.*;


/**
* author:dingyi
* time:2019/8/14 0014 16:05
*/
public class TestStu {
@Test
public void firstTest(){
// 1 创键一个EntityManagerFactory 对象 使用完关闭
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");
// 2 使用工厂对象EntityManagerFactory 就是一个连接
EntityManager entityManager = factory.createEntityManager();
// 3 开启事物
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
// 4 创键 Customer 对象

Stu stu = new Stu();
stu.setName("jack");
stu.setAge(123);
stu.setSex("男");

// 5 使用Entitymanager 对象 的persist 方法向数据库添加数据
entityManager.persist(stu);
// 6 事物提交
transaction.commit();
// 7 关闭连接
entityManager.close();
factory.close();
}
}

 
 posted on 2019-08-14 15:01  来呀~快活啊  阅读(1165)  评论(0编辑  收藏  举报