.
JPA
概述
JPA
的全称是
Java Persistence API
, 即
Java
持久化
API
,是
SUN
公司推出的一套基于
ORM
的规范,内部是由一系列的接口和抽象类构成。
2.
案例:
实现保存一个客户到数据库的客户表中
2.1
新建
maven
工程
,
并
导入坐标
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.hibernate.version>5.0.7.Final</project.hibernate.version>
</properties>
<dependencies>
<!-- -->
junit
<dependency>
<groupId></groupId>
junit
<artifactId></artifactId>
junit
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--
hibernate
对
jpa
的支持包
--> <dependency>
<groupId>org.hibernate</groupId>
<artifactId>-</artifactId>
hibernate
entitymanager
<version>${project.hibernate.version}</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>-c3p0</artifactId>
hibernate
<version>${project.hibernate.version}</version>
</dependency>
<!-- log
日志
-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- and MariaDB -->
Mysql
<dependency>
<groupId></groupId>
mysql
<artifactId>-connector-java</artifactId>
mysql
<version>5.1.6</version>
</dependency>
</dependencies>
2.2
创建客户的数据库表和客户的实体类
CREATE TABLE cst_customer (
cust_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT '
客户编号
(
主键
)',
cust_name varchar(32) NOT NULL COMMENT '
客户名称
(
公司名称
)'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
@Entity //
声明实体类
@Table(name="cst_customer") //
建立实体类和表的映射关系
public
class
@Id//
声明当前私有属性为主键
@GeneratedValue(strategy=GenerationType.) //
IDENTITY
配置主键的生成策略
@Column(name="cust_id") //
指定和表中
cust_id
字段的映射关系
private
@Column(name="cust_name") //
指定和表中
cust_name
字段的映射关系
private
省略
getXX,setXX 方法
}
2.3 配置JPA的核心配置文件
在
java工程的
resources路径下创建一个名为
META-INF的文件夹,在此文件夹下创建一个名为
persistence.xml
的配置文件
<?xml version= "1.0" "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" <!-- 配置持久化单元 name :持久化单元名称 transaction-type :事务类型 RESOURCE_LOCAL :本地事务管理 JTA :分布式事务管理 --> <persistence-unit name= "myJpa" "RESOURCE_LOCAL" <!-- 配置 JPA 规范的服务提供商 --> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <properties> <!-- 数据库驱动 --> <property "javax.persistence.jdbc.driver" "com.mysql.jdbc.Driver" <!-- 数据库地址 --> <property "javax.persistence.jdbc.url" "jdbc:mysql://localhost:3306/jpa" <!-- 数据库用户名 --> <property name= "javax.persistence.jdbc.user" "root" <!-- 数据库密码 --> <property name= "javax.persistence.jdbc.password" "root" <!-- jpa JPA 规范的提供者为 hibernate jpa hibernate --> <property name= "hibernate.show_sql" "true" <property name= "hibernate.format_sql" "true" <property name= "hibernate.hbm2ddl.auto" "create" </properties> </persistence-unit> </persistence> |
2.4
实现保存操作
@Test
public
void
/**
*
创建实体管理类工厂,借助
Persistence
的静态方法获取
*
其中传递的参数为持久化单元名称,需要
jpa
配置文件中指定
*/
EntityManagerFactory factory = Persistence.("myJpa");
createEntityManagerFactory
//
创建实体管理类
EntityManager em = factory.createEntityManager();
//
获取事务对象
EntityTransaction tx = em.getTransaction();
//
开启事务
tx.begin();
Customer c = Customer();
new
c.setCustName("
传智播客
"
); //
保存操作
em.persist(c);
//
提交事务
tx.commit();
//
释放资源
em.close();
factory.close();
}
更多技术资讯可关注:gzitcast