Hibernate教程实战篇:SpringBoot整合Hibernate开发完整项目

admin Hibernate教程 5


刚学完 Hibernate 基础的朋友,是不是想动手做个实战项目?但一提到 “SpringBoot 整合 Hibernate” 就发怵 —— 依赖怎么配?配置文件怎么写?实体类和数据库怎么关联?其实啊,整合没那么难,今天兔子哥就带大家一步步做个完整项目,从搭建环境到测试接口全流程走一遍,新手也能跟着做!

一、先搞清楚:为啥要 SpringBoot 整合 Hibernate?


有朋友会问:“我单独用 Hibernate 也行啊,为啥非要跟 SpringBoot 搭伙?” 单独用 Hibernate 确实能干活,但要自己配置 SessionFactory、事务管理这些,麻烦得很。而 SpringBoot 能自动配置这些组件,咱们只需要专注业务逻辑,开发效率能提高不少。

二、环境准备:这些工具和依赖不能少


咱们用的开发工具是 IDEA,数据库用 MySQL 8.0,JDK 版本 1.8 以上。新建 SpringBoot 项目时,需要添加这几个核心依赖:
依赖名称作用说明
Spring Web支持 Web 开发,提供控制器等功能
Spring Data JPA简化 Hibernate 操作,提供 Repository 接口
MySQL Driver连接 MySQL 数据库的驱动
Lombok简化实体类 get/set 方法编写

在 pom.xml 里添加这些依赖后,记得刷新 Maven 让依赖生效。这里提醒下,Spring Data JPA 底层就是用的 Hibernate,所以不用单独加 Hibernate 依赖了。

三、配置数据库:application.yml 这么写


项目建好后,在 resources 目录下新建 application.yml 文件,配置数据库连接和 JPA 参数:
yaml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/hibernate_demo?serverTimezone=UTC&useSSL=falseusername: root  # 换成你的数据库用户名password: 123456  # 换成你的数据库密码jpa:hibernate:ddl-auto: update  # 自动创建或更新表结构show-sql: true  # 控制台打印SQL语句properties:hibernate:format_sql: true  # SQL语句格式化database-platform: org.hibernate.dialect.MySQL8Dialect  # MySQL方言

这里的 ddl-auto 设置为 update 很实用,启动项目时 Hibernate 会根据实体类自动生成表,改了实体类字段也会自动更新表结构,不用手动写 SQL 建表了。

四、编写核心代码:从实体类到控制器


1. 实体类(Entity)


咱们以用户表为例,创建 User 实体类,用 JPA 注解映射数据库表:
java
import lombok.Data;import javax.persistence.*;@Data  // Lombok注解,自动生成get/set@Entity  // 标识这是实体类@Table(name = "t_user")  // 对应数据库表名public class User {@Id  // 主键@GeneratedValue(strategy = GenerationType.IDENTITY)  // 自增主键private Integer id;@Column(name = "username", length = 50, nullable = false)  // 字段配置private String username;@Column(name = "age")private Integer age;@Column(name = "email", unique = true)  // 邮箱唯一private String email;}

2. Repository 接口


创建 UserRepository 接口,继承 JpaRepository,Spring Data JPA 会自动实现 CRUD 方法:
java
import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface UserRepository extends JpaRepository<User, Integer> {// 自定义查询:根据用户名模糊查询List<User> findByUsernameLike(String username);}

3. 业务层(Service)


编写 UserService 处理业务逻辑,调用 Repository 的方法:
java
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;import java.util.Optional;@Servicepublic class UserService {@Autowired  // 注入Repositoryprivate UserRepository userRepository;// 新增用户public User addUser(User user) {return userRepository.save(user);}// 查询所有用户public List<User> getAllUsers() {return userRepository.findAll();}// 根据ID查询用户public User getUserById(Integer id) {Optional<User> user = userRepository.findById(id);return user.orElse(null);  // 没找到返回null}}

4. 控制器(Controller)


创建 UserController,提供 HTTP 接口:
java
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestController@RequestMapping("/users")  // 接口前缀public class UserController {@Autowiredprivate UserService userService;// 新增用户:POST请求@PostMappingpublic User addUser(@RequestBody User user) {return userService.addUser(user);}// 查询所有用户:GET请求@GetMappingpublic List<User> getAllUsers() {return userService.getAllUsers();}// 根据ID查询用户:GET请求@GetMapping("/{id}")public User getUserById(@PathVariable Integer id) {return userService.getUserById(id);}}

五、测试项目:这样验证接口是否生效


项目写完了,怎么知道能不能用?咱们用 Postman 测试接口:
  1. 启动 SpringBoot 项目,确保控制台没有报错
  2. 用 Postman 发送 POST 请求到http://localhost:8080/users,请求体里放 JSON 数据:

json
{"username": "兔子哥","age": 30,"email": "test@example.com"}

  1. 发送成功后,数据库 t_user 表会新增一条记录
  2. 再发送 GET 请求到http://localhost:8080/users,就能看到刚才新增的用户信息了

六、遇到问题别慌:这些坑我踩过


开发过程中肯定会遇到问题,兔子哥总结了几个常见的:
  • 问题 1:启动项目报 “数据库连接失败”?
    答:检查 application.yml 里的 username、password 是不是和你的数据库一致,MySQL 服务有没有启动。
  • 问题 2:新增用户时邮箱重复也能成功?
    答:实体类 email 字段加了 unique=true,但可能表已经创建了,改了注解后没生效。可以把 ddl-auto 改成 create(会删除旧表重建),测试完再改回 update。
  • 问题 3:Repository 自定义方法报错?
    答:方法名要符合 Spring Data JPA 的命名规范,比如 findByUsernameLike,不能随便起名。

七、个人建议:这样学整合框架更快


其实整合框架没什么捷径,就是多写多练。兔子哥建议大家:
  1. 先把基础依赖和配置搞懂,这是项目跑起来的前提
  2. 从简单的 CRUD 做起,一步步加功能
  3. 遇到报错别着急问别人,先看控制台日志,大部分问题日志里都有提示
  4. 多试试修改配置参数,看看不同参数有什么效果

这个项目虽然简单,但包含了 SpringBoot 整合 Hibernate 的核心流程,新手跟着做一遍,对框架整合的理解会深很多。动手做起来吧,遇到问题多调试,你会发现整合框架其实没那么难!

标签: com.mysql.cj.jdbc.Driver driver-class-name

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~