JPAUtils类

Posted jameshuangbhlx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPAUtils类相关的知识,希望对你有一定的参考价值。

保证工程中EntityManagerFactory只有一个

多个线程并发访问这个EntityManagerFactory不会有线程安全问题,是一个线程安全对象

用entityManager进行增删改查

查询默认会使用缓存,自带缓存

em有缓存对象,先检测缓存里是否有id为1的客户对象,没有,就发送sql语句查询数据库得到一个对象,然后再把该对象存到缓存里

这个缓存比mybatis缓存强,mybatis缓存鸡肋,查一个数据,放缓从,事务没提交,做一些增删改,缓存立马失效 

查询的延迟加载

修改

  先查询再修改

  事务提交会自动更新

    过程:先查出来,事务提交的时候,会比较对象数据是否和表的记录一致,如果不一致,就把对象信息更新到表里面去

  对象要和em有关系才会自动更新,否则显示调用更新em.merge(""),这个方法容易丢失数据,不推荐使用

删除

  先查询,再删除

detached:游离态,脱管  不受管理

persistence: 持久态

 

JPQL  java Persistence Query Language

sql:select * from cst_customer

jpql:from Customer  去掉select * ,将表名换成类名,列名换成属性名,查出的一行数据形成一个对象,放到集合中去返回

查询所有

em.createQuery("from Customer")

分页查询

  //设置分页信息

 mysql分页用limit,oracle分页用rownum

 

查count(*)规定写long

 

 

以上是关于JPAUtils类的主要内容,如果未能解决你的问题,请参考以下文章

jpql简单l查询

android快速开发--常用utils类

Spring中Utils的使用系列:StringUtils

比较两个实体类是否一致utils

带你了解Spring中的各种Utils

保存一下简单封装的工具类JsonUtils android网络判断的Utils 是否连接无wifisdcard状态的utils