JPA介绍

在java开发中,涉及到数据库访问的主要是两种框架,一个是MyBatis,另一个是JPA。听说在国外JPA用的比较多,在国内MyBatis用的比较多 国内用的多好像是因为整个阿里系都用的Mybatis.
JPA全程是java持久化API,他的目的就是帮助我们提高开发效率,他的核心是Java持久化查询语句(JPQL)对存储在关系数据库中的实体进行查询、在语法上类似于SQL但是操作的是实体对象而已不是直接对数据库表进行操作。
使用JPA开发的流程如下:
1.将数据库表映射到项目实体中
2.生成对应的Repository
3.实现Service,Service中调用Repository
JPA的好处在于在Repository里 ,对于那些比较简单的逻辑比如单表查询,直接根据名字就可以实现查询逻辑。对于大部分查询来说,真的很方便。但你用多了Mybatis你刚开始使用JPA的时候会感到莫名其妙。
JPA对于开发效率有很大提升JPA想要做的就是尽量让你少写sql甚至不写sql基于这种思想JPA实现了它自己的一套语法,注解规则。
JPA要用各种注解配合来实现数据实体之间一对多,多对多等的关联关系。正因为如此实体变得不像实体而是掺杂逻辑在里面也增加了实体的复杂度 对于复杂的业务来说很容易造成实体间直接或间接的循环引用。
JPA有些注解用上了会影响到数据库层面,比如关键外键的注解如果使用默认设置这个外键就真的会应用到数据库表里,在表上建外键还有其他的一些ORM框架也是如此。
JPA的优势
标准话:提供相同的API这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
简单易用,集成方便:JPA的主要目标之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java类一样简单,只需要使用javax.persistennce.Entity进行注释;JPA的框架和接口也都非常简单
可媲美JDBC的查询能力:JPA的查询语言是面向对象的JPA定义了独特的JPQL而且能够支持批量更新和修改 JOIN、 GROUP BY、HAVING等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。
支持面向对象的高级特性:JPA中能够支持面向对象的高级特性,如类之间的继承。多态和类之间的复杂关系,最大限度的使用面向对象的模型
ORM映射元数据:JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
JPA的API用于操作实体对象 执行CRUD操作 框架在后台完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来了。
查询语言(JPQL):这是持久化操作中很重要的一个方面,通过面向兑现而非面向数据库的查询语言查询数据,避免程序和具体的SQL紧密耦合。
使用JPA持久化对象的步骤
1创建persistence.xml在这个文件中配置持久化单元,JPA规范要求在类路径的META-INF目录下放置persistence.xml问你件的名称是固定的
2需要制定跟那个数据库进行交互;
3需要指定JPA使用哪个持久化的框架以及配置该框架的基本属性
4创建实体类 使用annotation来描述实体类跟数据库表之间的映射关系
5.使用JPA API完成数据增加、删除、修改和查询操作
6.创建EntityManagerFactory
7.创建EntityManager

JPQL
1.JPQL语言是一种和SQL非常类似的中间性和对象话查询语言它最终会被编译成针对不同底层数据库的SQL查询从而屏蔽不同数据库的差异
2.JPQL语言的语句可以是select语言。update语句或者delete语句 他们都通过Query接口封装执行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值