Spring Boot与数据库的集成:使用JPA、JDBC等进行数据访问

举报
bug菌 发表于 2025/06/05 12:01:35 2025/06/05
【摘要】 🏆 本文精选收录于《滚雪球学SpringBoot》专栏,专为零基础学习者量身打造。从Spring基础到项目实战,手把手带你掌握核心技术,助力你快速提升,迈向职场巅峰,开启财富自由之路🚀!无论你是刚入门的小白,还是已有基础的开发者,都能在这里找到适合自己的学习路径!    🌟 关注、收藏、订阅,持续更新中!和我们一起高速成长,突破自我!💡

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

🌱 前言 🚀

  Spring Boot为开发者提供了多种方式来与数据库进行交互,包括使用JPA(Java Persistence API)、JDBC(Java Database Connectivity)等。Spring Boot的自动配置和Spring Data JPA使得与数据库的集成变得非常简单和高效。无论你是使用关系型数据库(如MySQL、PostgreSQL)还是NoSQL数据库(如MongoDB),Spring Boot都能提供强大的支持。

  本文将详细介绍如何使用Spring Boot与数据库进行集成,重点讲解如何使用JPA和JDBC进行数据访问,帮助你更好地构建数据驱动的应用。


💡 使用JPA与数据库集成

JPA(Java Persistence API)是Java官方提供的ORM(对象关系映射)标准,它使得Java对象可以与数据库中的表进行映射,简化了数据的持久化过程。Spring Data JPA是Spring提供的一套用于简化JPA开发的框架,它通过JpaRepository提供了许多常用的CRUD操作方法,极大地减少了样板代码。

1. 添加依赖

在Spring Boot项目中,使用JPA与数据库进行集成非常简单,只需要在pom.xml中添加Spring Data JPA和数据库驱动的依赖。

1.1 MySQL配置依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

1.2 PostgreSQL配置依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

2. 配置数据库连接

application.propertiesapplication.yml中配置数据库连接信息。例如,配置MySQL数据库的连接:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

配置PostgreSQL:

spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

3. 创建实体类

使用JPA时,我们需要为每个数据库表创建一个实体类,并使用JPA注解将类的属性映射到数据库表的字段。例如,创建一个User实体类:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String email;

    // Getters and setters
}

@Entity注解表示该类是一个JPA实体类,@Id标识主键,@GeneratedValue表示主键的生成策略。

4. 创建Repository接口

Spring Data JPA通过JpaRepository接口来提供常用的CRUD操作方法,开发者只需要继承JpaRepository接口即可自动获得这些方法。例如:

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

Spring Data JPA会自动实现findByName方法,查询name字段匹配的所有User记录。

5. 使用Repository进行数据操作

在服务类中,可以使用@Autowired注解来注入UserRepository,并进行数据操作。

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> getUsersByName(String name) {
        return userRepository.findByName(name);
    }

    public void saveUser(User user) {
        userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

Spring Data JPA会自动提供save(), findById(), deleteById()等常用方法。


🛠️ 使用JDBC与数据库集成

JDBC(Java Database Connectivity)是一种标准的Java数据库连接API,它通过直接执行SQL查询和更新操作来与数据库交互。在Spring Boot中,JdbcTemplate提供了便捷的JDBC操作接口,可以轻松执行SQL语句。

1. 添加依赖

与JPA不同,使用JDBC时不需要额外引入spring-boot-starter-data-jpa,而是引入spring-boot-starter-jdbc和相应的数据库驱动依赖。

1.1 MySQL配置依赖

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

1.2 PostgreSQL配置依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

2. 配置数据源

application.properties文件中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3. 使用JdbcTemplate

Spring Boot提供的JdbcTemplate简化了JDBC操作,支持查询、更新等操作。首先,我们需要在@Configuration类中配置一个JdbcTemplate的Bean:

@Configuration
public class DatabaseConfig {

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

4. 执行SQL操作

使用JdbcTemplate执行查询、更新等SQL操作:

@Service
public class UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    // 查询所有用户
    public List<User> getAllUsers() {
        String sql = "SELECT * FROM users";
        return jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                return new User(rs.getLong("id"), rs.getString("name"), rs.getString("email"));
            }
        });
    }

    // 插入新用户
    public void addUser(User user) {
        String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
        jdbcTemplate.update(sql, user.getName(), user.getEmail());
    }
}

在这个例子中,jdbcTemplate.query()方法用于执行查询,RowMapper将结果集映射为User对象。


🧪 Spring Boot与数据库的其他功能

1. 数据库初始化

Spring Boot支持在启动时执行数据库初始化脚本。你可以在resources目录下创建schema.sqldata.sql文件来初始化数据库。

1.1 schema.sql

CREATE TABLE IF NOT EXISTS users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255)
);

1.2 data.sql

INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');

这些SQL脚本会在应用启动时自动执行,帮助初始化数据库。

2. 数据库连接池

Spring Boot默认使用HikariCP作为连接池,帮助你高效管理数据库连接。你可以在application.properties中调整连接池的配置:

spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-timeout=30000

🎯 总结:Spring Boot与数据库集成的优势

Spring Boot通过自动配置和简化的开发方式,使得数据库集成变得非常简单和高效。使用JPA时,Spring Data JPA通过JpaRepository接口简化了数据访问层的开发,而使用JDBC时,JdbcTemplate提供了便捷的API来执行SQL操作。

核心优势:

  • 简化配置:通过application.propertiesapplication.yml进行简单的数据库配置。
  • 自动化初始化:自动执行schema.sqldata.sql文件来初始化数据库。
  • 强大的数据库操作支持:通过Spring Data JPA和JdbcTemplate,轻松实现常见的数据操作。
  • 高效的连接池管理:默认使用HikariCP连接池,确保数据库连接的高效管理。

通过Spring Boot与Spring Data JPA的结合,数据库操作变得更加简单、高效,是现代Java开发中构建数据驱动应用程序的理想选择。

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌(全网一个名),CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。