Java与数据库连接各框架的概念
Java与数据库连接各框架的概念
简介
JDBCjpa mybatis
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语⾔中⽤来规范客户端程序如何来访问数据库的应⽤程序接⼝,提供了诸如查询和更新数据库中数据的⽅法。我们通常说的JDBC是⾯向关系型数据库的。
JDBC API
JDBC API是⼀个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。
JDBC库中所包含的API通常与数据库使⽤于:
连接到数据库
创建SQL或MySQL语句
在数据库中执⾏SQL或MySQL查询
查看和修改数据库中的数据记录
JDBC API⽀持⽤于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:
JDBC API:提供应⽤程序到JDBC管理器连接。
JDBC驱动程序API:⽀持JDBC管理器到驱动程序连接。
JDBC API使⽤驱动程序管理器并指定数据库的驱动程序来提供与异构数据库的透明连接。
JDBC驱动程序管理器确保使⽤正确的驱动程序来访问每个数据源。 驱动程序管理器能够⽀持连接到多个异构数据库的多个并发驱动程序。
hibernate
Hibernate是Java环境的对象关系映射解决⽅案。对象关系映射或ORM是将应⽤程序域模型对象映射到关系数据库表的编程技术。Hibernate是⼀个基于Java的ORM⼯具,它提供了⼀个框架,⽤于将应⽤程序域对象映射到关系数据库表,反之亦然。
JPA
JPA的是 Java Persistence API 的简写,是Sun官⽅提出的⼀种ORM规范!
Sun提出此规范有2个原因:
1.简化现有Java EE和Java SE应⽤开发⼯作。
2.Sun希望整合ORM技术,实现天下归⼀。
重点在于,JPA是⼀套规范,⽽不是具体的ORM框架。
故Hibernate、TopLink 等ORM框架 都是JPA的实现,其中Hibernate已获得Sun的兼容认证。
JPA的标准的定制是hibernate作者参与定制的,所以JPA是Hibernate的⼀个总成。
优势在于:
1.开发者⾯向JPA规范的接⼝,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现。
2.这样开发者可以避免为使⽤Hibernate学习⼀套ORM框架,为使⽤TopLink⼜要再学习⼀套ORM框架。
Spring-data-jpa
Spring Data是Spring Framework的⼀部分 。Spring Data存储库抽象的⽬标是显着减少为各种持久性存储实现数据访问层所需的样板代码量。
Spring Data JPA不是JPA提供者。它是⼀个库/框架,它在我们的JPA提供程序(如Hibernate)的顶部添加了⼀个额外的抽象层。
mybatis
MyBatis 是⼀款优秀的持久层框架,它⽀持定制化 SQL、存储过程以及⾼级映射。MyBatis 避免了⼏乎所有的 JDBC 代码和⼿动设置参数以及获取结果集。MyBatis 可以使⽤简单的 XML 或注解来配置和映射原⽣信息,将接⼝和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
对⽐
Hibernate和Spring Data JPA区别:
Hibernate是⼀个JPA实现,⽽Spring Data JPA是⼀个JPA数据访问抽象。Spring Data提供了GenericDao ⾃定义实现的解决⽅案 。它还可以通过⽅法名称约定代表您⽣成JPA查询。
使⽤Spring Data,您可以使⽤Hibernate,Eclipse Link或任何其他JPA提供程序。⼀个⾮常有趣的好处是您可以使⽤ @Transactional 注释以声明⽅式控制事务边界。
Spring Data JPA不是⼀个实现或JPA提供程序,它只是⼀个抽象,⽤于显着减少为各种持久性存储实现数据访问层所需的样板代码量。
Hibernate提供了Java Persistence API的参考实现,使其成为具有松散耦合优势的ORM⼯具的绝佳选择。
请记住,Spring Data JPA始终需要JPA提供程序,如Hibernate或Eclipse Link。
Mybatis与Hibernate的区别:
1. hibernate是全⾃动,⽽mybatis是半⾃动
2. hibernate数据库移植性远⼤于mybatis
3. hibernate拥有完整的⽇志系统,mybatis则⽋缺⼀些
4. mybatis相⽐hibernate需要关⼼很多细节
5. sql直接优化上,mybatis要⽐hibernate⽅便很多

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。