Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring Data JPA,为不同数据库提供了统一的接口,我们只需继承其默认的JpaRepository(仓库模式),就自动的拥有很多常见的数据访问方法。

本文Demo:https://github.com/wanliwang/cayman/tree/master/cm-bootweb,每一种类型数据访问对应其Controller名称。

SpringBoot详细研究-02数据访问

系列文章

快速入门系列--SpringBoot--01基础

快速入门系列--SpringBoot--02数据访问

快速入门系列--SpringBoot--03系统集成

 

SpringBoot详细研究-02数据访问

SpringData是解决数据访问问题的一揽子解决方案,包含对JPA, MongoDB, Redis, Hadoop, Data Rest, Elasticsearch等一系列组件的支持,其通过Spring Data Commons提供统一的API。

3个常见数据访问组件的比较:

Hibernate 对数据库提供了较为完整的封装,封装了基本的DAO层操作,有较好的数据库移植性(其实就是对JPA的一种实现)

Mybatis 可以进行更细致的SQL优化,查询必要的字段,但是需要维护SQL和查询结果集的映射,而且数据库的移植性较差,针对不同的数据库编写不同的SQL。(有空试试mybatis接入公司框架)

Spring Data JPA 极大的简化了数据库访问,可以通过命名规范、注解的方式较快的编写SQL。

Spring Data JPA简单介绍,public interface PersonRepository extends JpaRepository<Person, Long> {},只要继承JpaRepository接口,就默认包含了常见的增删改查方法。(需要时再查阅,个人不是很推荐在关系型数据库中使用jpa,但NOSQL还是很推荐的)

声明式事务:给Config类添加@EnableTransactionManagement即可,而springboot无需任何配置,只需在需要事务处理的方法上添加@Transactional注解即可(spring包下)。

 

SpringBoot详细研究-02数据访问

访问方式1,jdbc:Spring boot可以通过jdbcTemplate对数据库进行访问,不过功能相对简单,需要自己进行增强,相关配置如下。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/user?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Maven:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

Tip:

Docker启动时:docker run -d -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 mysql

 

访问方式2,jpa:Spring Data对java的JPA标准提供了实现(Hibernate也是对该标准的一种实现),Spring boot对此进行了集成,相比访问方式1,需要增加如下配置。

1 spring.jpa.generate-ddl=false
2 spring.jpa.show-sql=true
3 spring.jpa.hibernate.naming.strategy=org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy
4 
5 Maven:
6         <dependency>
7             <groupId>org.springframework.boot</groupId>
8             <artifactId>spring-boot-starter-data-jpa</artifactId>
9         </dependency>
View Code

相关文章:

  • 2021-09-30
  • 2022-12-23
  • 2021-12-03
  • 2021-09-01
  • 2022-12-23
  • 2021-07-10
  • 2021-11-18
  • 2021-09-28
猜你喜欢
  • 2021-09-09
  • 2021-07-31
  • 2021-08-30
  • 2021-11-25
  • 2021-09-07
  • 2021-10-04
  • 2021-09-10
相关资源
相似解决方案