2、JPA 环境搭建
1.创建Maven项目
2.添加依赖
<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的支持包 -->
<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.配置JPA核心配置文件
该文件默认情况下必须创建于resources/META-INF目录下
并且命名为persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!--需要配置persistence-unit节点
持久化单元:
name:持久化单元名称
transaction-type : 事务管理的方式
JTA:分布式事务管理
RESOURCE_LOCAL
-->
<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!--JPA实现方式-->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!--配置数据库-->
<properties>
<!--数据源
驱动: javax.persistence.jdbc.driver
数据库地址:javax.persistence.jdbc.url
用户名:javax.persistence.jdbc.user
密码:javax.persistence.jdbc.password
-->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="12345"/>
<!--(可选)配置JPA实现方(Hibernate)的配置信息
显示sql
自动创建数据库表(建表策略)
create: 程序运行是创建数据库表(已存在则删,然后再创建)
update 程序运行时创建表(如果有表,不会创建表)
none 不会创建表
-->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
4.编写实体类,建立实体类与表之间的关系
/**
* 客户的实体类
* 配置映射关系
* 1、实体类和表的关系
* 2、实体类中属性和表字段的映射关系
* @Entity 声明实体类
* @Table 配置实体类和表的映射关系
* name:配置数据库表的名称
*/
@Entity
@Table(name = "users")
public class Users {
/**
* @Id: 声明主键的配置
* @GeneratedValue: 配置主键的生成策略
* strategy =
* GenerationType.IDENTITY 自动增长
* 要求你底层数据库必须支持自动增长
* GenerationType.SEQUENCE
* 要求底层数据库必须支持序列
* GenerationType.TABLE
* JPA提供的一种机制,通过一张数据库表的形式完成主键自增
* GenerationType.AUTO
* 由程序自动选择主键生成策略
* @Column: 配置属性和字段的映射关系
* name:数据库表中字段的名称
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
@Column(name = "user_name")
private String userName;
@Column(name = "user_sex")
private String userSex;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
@Override
public String toString() {
return "Users{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userSex='" + userSex + '\'' +
'}';
}
}
5.测试
/**
* 测试jpa的保存
* 1.加载配置文件创建工厂(实体类工厂)对象
* 2.通过实体管理类工厂获取实体管理器
* 3.获取事务对象,开启事务
* 4.完成增删改查操作
* 5.提交事务(回滚事务)
* 6.释放资源
*/
@Test
public void testInsert(){
//1.加载配置文件创建工厂(实体类工厂)对象
// EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
//2.通过实体管理器工厂获取实体管理器
// EntityManager entityManager = factory.createEntityManager();
EntityManager entityManager = JpaUtils.getEntityManager();
//3.获取事务对象,开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4.完成增删改查操作
Users user = new Users();
user.setUserName("小黑");
user.setUserSex("男");
//保存
entityManager.persist(user);
//5.提交事务(回滚事务)
transaction.commit();
//6.释放资源
entityManager.close();
// factory.close();
}