Web持久层框架

目录:

             一、什么是持久层框架

             二、Spring Boot数据持久层技术

             三、面试范例

             四、Spring Boot整合

             五、持久层框架选择

             六、DAO数据持久层

            七、总结

一、什么是持久层框架

       Web持久层框架是一种软件服务,将应用程序与其使用和操纵的数据源分离。持久层框架位于机构的数据源之上,隐藏访问这些数据源的数据访问API(如JDBC,JDO或实体EJB)。提供的服务应完全抽象和从这个数据源使用和操纵数据的物理细节。简单来说,持久层就是完成和数据库交换内容的结构,对数据库进行增删查改。

二、Spring Boot数据持久层技术:

  • MyBatis
  • JdbcTempTate(Spring Boot自带)
  • Spring Data Jpa规范

三、面试范例

面试官:Spring Boot的持久化技术有哪些?如何配置多数据源?

https://zhuanlan.zhihu.com/p/205125586

四、Spring Boot整合

1、Spring Boot整合JdbcTempTate

原生JDBC进行数据操作,代码冗余度高。Spring 针对此问题封装了JdbcTemplate,它可以通过
Spring注入功能将数据源注入IdbcTemplate中,Spring 中的IOC容器可以将数据源当作Java
Bean进行管理,完成代码简化。


2、Spri ngBoot整合Mybatis


Mybatis持久层框架同样封装了jdbc操作细节,开发人员秩序关注sq1语句,无需关注注册驱动、创
建链接等过程,使用ORM ( object Relational Mapping, 即对象/关系数据库映射)思想实现对结
果集的封装。


3、Spring Boot整合Jpa


Jpa(Java Persistence API )是SUN公司提出的ORM规范,提供了一种对象/映射工具来管理Java应
用中的关系数据,使用XML或者注解的方式简化对数据库的操作。
它的出现是为了规范现有的ORM框架,采用Jpa开发时,我们仍将使用这些ORM框架,只是此时开发出来的应用不在依赖于某个持久化提供商。应用可以在不修改代码的情况下载任何JPA环境下运行,真正做到低耦合,可扩展的程序设计。类似于JDBC,在JDBC出现以前,我们的程序针对特性的数据库API进行编程,但是现在我们只需要针对JDBC API 编程,这样能够在不改变代码的情况下就能换成其他的数据库,而Spring-Data-jpa是在Jpa规范下提供的Resporsity实现。JpaResporsi ty拥有常用的CURD方法及分页、字段排序等,可以统- -不同 ORM框架对数据库操作的代码。

五、持久层框架选择

1、从用户数量看,主流的选择是JPA和MyBatis, JPA 使用Hibernate作为默认实现,因此就是Hibernate和MyBatis的选择。

2、关注度:

根据谷歌数据, JPA全球用户数量最多,但国内MyBatis用户数更多。


3、Hibernate特点

  • 全自动的技术框架,无需维护SQL。
  • 偏向于对象操作,从对象的角度更容易开发维护。
  • 因SQL生成是自动的,所以在切换不同数据库时更容易,数据库移植性更好。
  • 缓存机制优于MyBatis。

4、MyBatis特点

  • 需要维护SQL,算是半自动化技术框架,但因此也可以更自由的进行SQL定制。
  • 在学习SQL较为精通时,更容易掌握。
  • 切换数据库有较大的维护工作量,因不同的数据库SQL写法存在区别。

5、如何选择

  • SQL基础不好,或者习惯了其他的等无需SQL维护的ORM框架如EF时,选择JPA
  • SQL熟练掌握则可选择MyBatis,毕竟国内使用者众多

6、MyBatis流程示例

  • pom. xm1添加依赖
  • 添加创建数据库架构的sq|文件,并在其中写create table 这样的语句
  • yml文件中配置数据连接,配置spring . datasource. schema指向上一步的架构sq|文件
  • 创建实体类,如user
  • 添加mapper接口, 接口方法实现有两种方式

   可在接口方法上通过如@Select|@Update|@Delete注解写sql语句


或者使用mapper配置文件

在业务层或者Controller中直接使用mapper的接口对象进行crud操作。

六、DAO数据持久层

       按照Spring Data规范,查询方法以find工read I get开头, 涉及条件查询时, 条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。在接口中只需要声明符合规范的方法,即拥有对应的功能,如下表所示为方法中支持的关键字:

1. 添加repositories文件夹


2. 添加UserRepository接口

  • 继承JpaRepository接口,两个类型参数分别时User类和主键类型UUID
  • 继承的上述接口包含了CRUD方法,一般的数据访问即可直接使用
  • 声明一个findUserByUserNameAndPassword方法,返回User对象
  • 声明一个countByUserName方法,返回该用户名在数据库中的记录数

3. 添加UserProjection接口,使用投影选取特定的User字段

  • 添加一个getSalt方法,返回用户注册时的随机salt
  • 在UserRepository中添加一个findUsersByUserName方法,返回用户数据的salt投影,用于用户登录时salt验证

七、总结

通过学习Web持久层框架,了解到:

1. 数据库连接和操作:学习了如何建立与数据库的连接,执行SQL查询和更新操作,以及关闭数据库连接。这包括了解不同类型的数据库(如MySQL、PostgreSQL、Oracle等)以及如何使用相应的驱动程序进行连接。

2. ORM(对象关系映射):了解了ORM的概念,它是一种将数据库表映射到Java类的技术。通过使用ORM框架(如Hibernate、MyBatis等),可以更轻松地在Java代码中操作数据库,而无需编写繁琐的SQL语句。

3. CRUD操作:学习了创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的基本操作。这些操作是大多数Web应用程序的核心功能,因此掌握它们是至关重要的。

4. 事务管理:了解了事务的概念,它是一组数据库操作的原子性单元。学习了如何在Web应用程序中使用事务来确保数据的一致性和完整性。

5. 缓存:学习了如何使用缓存技术(如Redis、Ehcache等)来提高Web应用程序的性能。缓存可以减少对数据库的访问次数,从而提高响应速度。

6. 分页和排序:学习了如何在Web应用程序中实现分页和排序功能,以便用户可以更方便地浏览大量数据。

7. 安全性:了解了如何保护Web应用程序免受SQL注入、跨站脚本攻击(XSS)等安全威胁。学习了如何使用预编译语句、输入验证和转义等技术来提高应用程序的安全性。

8. 性能优化:学习了如何优化Web应用程序的性能,包括减少数据库查询次数、使用索引、优化SQL语句等方法。

9. 测试:了解了如何为Web持久层框架编写单元测试和集成测试,以确保代码的正确性和稳定性。

10. 设计模式:学习了一些常用的设计模式,如单例模式、工厂模式、代理模式等,这些模式可以帮助我们更好地组织和管理Web持久层代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蛋蛋想吃冰淇凌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值