SpringDataJpa简单优化
未优化前的代码:
public class JpaTest {
/**
* 测试jpa的保存
* 案例:保存一个客户到数据库中
* jpa的操作步骤
* 1、加载配置文件创建工厂(实体管理工厂)对象
* 2、通过实体管理工厂获取实体管理器
* 3、获取事务对象,开启事务
* 4、完成增删改查操作
* 5、提交事务(回滚事务)
* 6、释放资源
*/
@Test
public void testSave(){
//加载配置文件创建工厂(实体管理工厂)对象
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");
//通过实体管理工厂获取实体管理器
EntityManager em = factory.createEntityManager();
//获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//完成增删改查操作
Customer customer = new Customer();
customer.setCustName("ruirui");
customer.setCustLevel("vip");
customer.setCustSource("网络");
customer.setCustPhone("123456");
customer.setCustAddress("懒人中心");
//保存
em.persist(customer);
//提交事务
tx.commit();
//释放资源
em.close();
factory.close();
}
}
我们在每次保存数据库时都要创建工厂对象,这样极大浪费了内存资源和耗费大量时间,所以我们将创建工厂对象放在静态代码块中,只在启动程序时创建一次,这样子就可以较大幅度优化性能
具体代码如下:
工具类
/**
* 解决实体管理器工厂的浪费资源和耗时问题
* 通过静态代码块的形式,当程序第一次访问此工具类时,创建一个公共的实体管理器工厂对象
*
* 第一次访问getEntityManager方法:经过静态代码块创建一个factory对象,再调用方法创建一个EntityManager对象
* 第二次访问getEntityManager方法:直接通过一个已经创建好的factory对象,创建EntityManager对象
*/
public class JpaUtils {
private static EntityManagerFactory factory;
static{
//1.加载配置文件,创建entityManagerFactory
factory = Persistence.createEntityManagerFactory("myjpa");
}
/**
* 获取EntityManager对象
* @return
*/
public static EntityManager getEntityManager(){
return factory.createEntityManager();
}
}
测试类
public class JpaTest {
/**
* 测试jpa的保存
* 案例:保存一个客户到数据库中
* jpa的操作步骤
* 1、加载配置文件创建工厂(实体管理工厂)对象
* 2、通过实体管理工厂获取实体管理器
* 3、获取事务对象,开启事务
* 4、完成增删改查操作
* 5、提交事务(回滚事务)
* 6、释放资源
*/
@Test
public void testSave(){
//通过实体管理工厂获取实体管理器
EntityManager em = JpaUtils.getEntityManager();
//获取事务对象,开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//完成增删改查操作
Customer customer = new Customer();
customer.setCustName("ruirui");
customer.setCustLevel("vip");
customer.setCustSource("网络");
customer.setCustPhone("123456");
customer.setCustAddress("懒人中心");
//保存
em.persist(customer);
//提交事务
tx.commit();
//释放资源
em.close();
}
}