JPA总结

1 什么是JPA

用于对象持久化的 API到数据库
Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层

2.JPA的hibernate区别

JPA它是ORM的规范,hibernate是其中一个实现框架

JDBC的缺点:
           优点:操作数据库最底层,性能最高(前提是你要有相应的经验,并且是一个数据库高手)

缺点1.因为JAVA是面向对象的,JDBC没有做到使数据能够面向对象的编程,使程序员的思考仍停留在SQL语句上。
             操作比较繁琐,很多代码需要重复写很多次。

            如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降

         2.移植数据库很麻烦,改动比较多

           主键的生成方式不同(mysql使用自增,oracle使用序列sequence)

           分页的sql语句也是不同(mysql使用limit,oracle使用ROWNUM)

JPA的优缺点:

优点

重复性代码不多 完成crud 只需要调用方法就可以搞定 比如保存 perisit(Employee employee)

merge

移植数据很方便,到时候只需要配置一些方言就可以搞定

提供的世界级缓存支持(一级缓存 二级缓存)

不用写sql ,会自动生成

面向对象操作,操作对象就相当于操作数据库,但是jpa也是支持sql

缺点:

1.不能干预sql语句的生成

      entityManager.find(User.class, 1L);    

        find方法默认查询t_user表的所有字段

      自动生成select user0_.id,user0_.name,user0_.age from t_user user0_ where user0_.id=?

   2.一个项目中,如果对sql语句的优化要求比较高,不适合用JPA(不过可以使用JPA对原生sql的支持来解决)

         3.如果一张表中有上亿级别的数据量,也不适合用JPA,其实也不适合用jdbc(可以使用数据库读写分离,分库分表方案解决)

2.JPA的完成CRUD

新增:persist --事务

修改:merge --事务

删除:remove --事务

查询:find

查询所有:使用jpql语句

工具类抽取

创建工厂
EntityManagerFactory f =Persistence.createEntityManagerFactory();
创建entitymanager对象
EntityManager eg = f.createEntityManager();
增删改需要事务
删除的对象是查出来的(最好判断是否为空)
查询所有(jpql) from Employee
 

3.JPA核心的类

1.Persistence:通过它我们可以得到EntityManagerFactory

Persistence.createEntityManagerFactory("cn.itsource.jpa")

2.EntityManagerFactory:实体管理工厂对象

作用:它是重量级的对象,因为它和数据库打交道,我们不要频繁的创建和销毁,如果我们频繁创建该对象或者销毁该对象,很损耗系统。尽量满足一个原则,1:1:1的应用程序对应1对应数据库 对应1个entityManagerFactory,尽量可以达到共享的效果,而且要注意线程安全问题(ThreadLocal)

3.EntityManager:(经常使用对象) 实体管理对象

可以完成CRUD

这个对象 你可以频繁创建和销毁,不会销毁太多性能 注意,如果多个操作 都在使用在对象,也会线程安全问题

4.维护了一个一级缓存

缓存(内存):容器,装数据 操作之前可以把数据,先从数据库读取出来,放入到缓存里面,下次来使用的,不需要查询数据库,直接从缓存里面取数据

怎么使用一级缓存?

缓存命中条件:同一个entityManagerFactory 同一个entityManager 同一个OID(实体对象主键id)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值