1、 什么是Jpa
1.1简单说下什么是jpa,jpa是一种数据库的操作规范类似于java中的接口。需要一些类去实现这个接口,才能实现这个功能。那么在数据库中,需要用hibernate框架去实现jpa的规范。当然了,还有别的框架也可以实现jpa。(因为我这个菜鸡就先学了hibernate的)
2、orm框架,在我所学的Hibernate、Mybatis、Jpa这三个数据库的框架中,均用到了orm框架。博客中有一篇专门描述orm框架的。
3、Jpa入门实例—存储用户信息到Mysql中
3.1配置Jpa编译环境
idea+maven3.6.3+jpa2.0+Mysql5.7
pom.xml配置文件如下
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.hibernate.version>5.0.7.Final</project.hibernate.version>
</properties>
<dependencies>
<!-- junit -->
<!-- 添加测试单元 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
非常重要的地方, 添加hibernate对jpa的支持
<!-- 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>
数据库的驱动
<!-- Mysql and MariaDB -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
3.2创建用户实体类
简单的一个pojo
- 在类的开头配置映射关系
1.@Entity:声明实体类
2.@Table:配置实体类和表的映射关系 - 实体类中映射和数据库表中字段的映射关系
- 标明主键
1.@Id:标明主键
2.@GeneratedValue:配置主键的生成策略
3.@Column:配置属性和字段的映射关系 - 普通字段
1.@Column:配置属性和字段的映射关系
package cn.itcast.domain;
import javax.persistence.*;
/**
* 客户实体类
* 1.配置映射关系
* 2.实体类中映射和表中字段的映射关系
* @Entity:声明实体类
* @Table:配置实体类和表的映射关系
* name:配置数据库表的名称
*/
@Entity
@Table(name="cst_customer")
public class Customer {
/**
* @Id:声明主键的配置
* @GeneratedValue:配置主键的生成策略
* GenerationType.IDENTITY:自增
* @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;//客户地址
省略get&set方法
}
3.3配置Jpa核心配置文件
- Jpa的核心配置文件必须放在类目录下的 META-INF文件夹中
- Jpa的核心配置文件必须叫 persistence.xml文件
- 文件头约束
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
4.xml文件内容
配置jpa节点和事务类型
<persistence-unit
配置jpa的实现类型
<provider </provider
配置数据库信息&可选配置:配置jpa实现方的配置信息-
<properties
数据库四个连接信息
还有两个jpa的可选配置
分别是显示sql语言和自动创建数据库
</properties
</persistence-unit
<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!-- jpa实现方式-->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- 数据库信息-->
<!-- 可选配置:配置jpa实现方的配置信息-->
<properties>
<!-- 数据库信息-->
<!-- 用户名 javax.persistence.jdbc.user
密码 javax.persistence.jdbc.password
驱动 javax.persistence.jdbc.driver
数据库地址 javax.persistence.jdbc.url
-->
//数据库用户
<property name="javax.persistence.jdbc.user" value="root"></property>
//数据库的密码
<property name="javax.persistence.jdbc.password" value="admin"></property>
//数据库驱动
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
//连接数据库
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa?characterEncoding=UTF-8"/>
<!-- 配置jpa实现方的配置信息-->
<!-- 显示sql:false true
自动创建数据库表:hibernate.hbm2ddl.auto
create 程序运行时创建数据库表,如果有先删除再创建
update 程序运行时 创建表(如果有表不会创建表)
none :不会创建表
-->
<property name="hibernate.show_sql" value="true"></property>
<property name="hibernate.hbm2ddl.auto" value="update"></property>
</properties>
</persistence-unit>
</persistence>
4、实现保存操作
4.1jpa操作流程
- 加载配置文件,创建工厂
- 通过实体管理类工厂获取实体管理器
- 获取事务对象,开启事务
- 完成增删改查的操作
- 提交事务(回滚事务)
- 释放资源
测试代码
@Test
public void testSave(){
//1.加载配置文件创建工厂(实体管理器工厂)对象
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理类工厂获取实体管理器
final EntityManager em = factory.createEntityManager();
//3.获取事务对象,开启事务
final EntityTransaction tx = em.getTransaction();
tx.begin();//开启事务
//4.完成增删改成
Customer customer=new Customer();
customer.setCustName("奥利给");
customer.setCustIndustry("煎饼果子");
customer.setCustAddress("北京");
//保存
em.persist(customer);//完成保存操作
// 5.提交事务
tx.commit();
//6.释放资源
em.close();
factory.close();
}
基本就是这样啦~~~有新的再继续更
637

被折叠的 条评论
为什么被折叠?



