入门 jpa--实体管理器的基本应用
Posted watchfree
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门 jpa--实体管理器的基本应用相关的知识,希望对你有一定的参考价值。
1.新建Jpa项目
2.引入所需的jar 包
3.创建实体类
package com.watchfree.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* 创建实体类
* @author watchfree
* @date 2016年12月6日下午7:12:43
*/
@Entity
public class Employee {
@Id private int id ;
private String name ;
private long salary ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getSalary() {
return salary;
}
public void setSalary(long salary) {
this.salary = salary;
}
public Employee() {
}
public Employee(int id){
this.id = id ;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "employee: id: "+this.id + " ,name: "+this.name + " ,saray: "+this.salary;
}
}
4.配置JPA Content 下的 persistence.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="EmployeeService"
transaction-type="RESOURCE_LOCAL">
<class>com.watchfree.entity.Employee</class>
<properties>
<!-- 数据库连接操作 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/jpa" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<!-- 配置 JPA 实现产品的基本属性. 配置 hibernate 的基本属性 -->
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
5.创建操作Employee实体的服务类
package com.watchfree.service;
import javax.persistence.EntityManager;
import com.watchfree.entity.Employee;
/**
* 操作Employee实体的服务类
*
* @author watchfree
* @date 2016年12月6日下午6:47:42
*/
public class EmployeeService {
protected EntityManager entityManager;
public EmployeeService(EntityManager entityManager) {
this.entityManager = entityManager;
}
/**
* 创建Employee方法
*
* @param id
* @param name
* @param salary
* @return
*/
public Employee createEmployee(int id, String name, long salary) {
Employee employee = new Employee(id);
employee.setName(name);
employee.setSalary(salary);
entityManager.persist(employee);
return employee;
}
/**
* 删除
*
* @param id
*/
public void removeEmployee(int id) {
Employee employee = findEmployee(id);
if (employee != null) {
entityManager.remove(employee);
}
}
/**
* 查找
*
* @param id
* @return
*/
public Employee findEmployee(int id) {
return entityManager.find(Employee.class, id);
}
/**
* 更新
* @param id
* @param raise
* @return
*/
public Employee raiseEmployeeSalary(int id, long raise) {
Employee employee = entityManager.find(Employee.class, id);
if (employee != null) {
employee.setSalary(employee.getSalary() + raise);
}
return employee;
}
/**
* 查詢所有
* @return
*/
public List<Employee> findAllEmployees() {
TypedQuery<Employee> query = entityManager.createQuery("SELECT e FROM Employee e",Employee.class);
return query.getResultList();
}
}
6.创建测试类
package com.watchfree.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.watchfree.entity.Employee;
import com.watchfree.service.EmployeeService;
public class EmpoyeeTest {
private EntityManagerFactory entityManagerFactory ;
private EntityManager entityManager ;
private EntityTransaction transaction ;
private EmployeeService employeeService ;
@Before
public void init() {
entityManagerFactory = Persistence.createEntityManagerFactory("EmployeeService") ;
entityManager = entityManagerFactory.createEntityManager() ;
transaction = entityManager.getTransaction() ;
employeeService = new EmployeeService(entityManager) ;
}
@After
public void destory(){
entityManager.close();
entityManagerFactory.close();
}
}
6.1测试添加操作
/**
* 创建测试
*/
@Test
public void createTest() {
transaction.begin();
Employee employee = employeeService.createEmployee(158, "watchfree", 35000);
transaction.commit();
System.out.println(employee.toString());
}
6.1.2 控制台输出:
6.1.3 查看数据库信息
6.2测试查询
/**
* find
*/
@Test
public void findTest() {
Employee employee = employeeService.findEmployee(158);
System.out.println(employee.toString());
}
6.2.1控制台输出
6.3 测试查询所有数据库数据
/**
* 查詢所有
* @return
*/
public List<Employee> findAllEmployees() {
TypedQuery<Employee> query = entityManager.createQuery("SELECT e FROM Employee e",Employee.class);
return query.getResultList();
}
6.3.1控制台输出
6.4 更新操作测试
/**
* 更新測試
*/
@Test
public void updateTest (){
transaction.begin();
Employee employee = employeeService.raiseEmployeeSalary(158, 1000);
transaction.commit();
System.out.println(employee);
}
6.4.1控制台输出
6.4.2数据库信息
6.5删除数据测试
/**
* 刪除測試
*/
@Test
public void deleteTest() {
transaction.begin();
employeeService.removeEmployee(158);
transaction.commit();
System.out.println("remove Employee 158");
}
6.5.1控制台输出
6.5.3查看数据库信息 id为158的记录被删除
参考资料:《Pro JPA2 Mastering the Java Persistence API》
以上是关于入门 jpa--实体管理器的基本应用的主要内容,如果未能解决你的问题,请参考以下文章
Java Servlet 过滤器和其他对象和实体管理器的范围