SpringBoot 使用Hibernate (JPA)

SpringBoot 使用Hibernate (JPA)

简介

Hibernate是一个开源的对象关系映射(ORM)框架,为Java语言提供了一种与数据库交互的简单、高效的方式。SpringBoot是一个快速开发框架,简化了Spring应用的配置和部署。本文将介绍如何在SpringBoot项目中使用Hibernate来进行数据持久化操作。

准备工作

在开始之前,我们需要确保已经搭建好了SpringBoot项目的基础框架。具体的搭建方式可以参考Spring官方文档。

添加依赖

在项目的pom.xml文件中添加以下依赖:

<dependencies>
    <!-- SpringBoot依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Hibernate依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

配置数据库

application.properties文件中添加数据库相关的配置:

# 数据库相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Hibernate配置
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

以上配置中,我们使用的是MySQL数据库,可以根据实际情况自行修改。

创建实体类

com.example.demo.entity包下创建一个名为User的实体类:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private Integer age;

    // 省略getter和setter方法
}

以上代码使用了@Entity注解来标识该类是一个实体类,@Table注解用于指定对应的数据库表名,@Id注解表示该属性是实体类的主键,@GeneratedValue注解用于指定主键的生成策略。

创建DAO接口

com.example.demo.repository包下创建一个名为UserRepository的接口:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

以上代码使用了JpaRepository接口提供的默认方法来实现基本的CRUD操作。

编写业务逻辑

com.example.demo.service包下创建一个名为UserService的类:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

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

    public User getById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    // 省略其他业务方法
}

以上代码使用了@Autowired注解来自动注入UserRepository对象,然后可以调用其提供的方法来操作数据库。

创建Controller

com.example.demo.controller包下创建一个名为UserController的类:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/save")
    public String save(@RequestBody User user) {
        userService.save(user);
        return "Success";
    }

    @GetMapping("/{id}")
    public User getById(@PathVariable Long id) {
        return userService.getById(id);
    }

    // 省略其他请求处理方法
}

以上代码使用了@RestController注解来标识该类是一个控制器类,@RequestMapping注解用于指定映射的URL地址,@Autowired注解用于自动注入UserService对象。其中,@PostMapping@GetMapping注解用于指定POST和GET请求对应的处理方法。

编写测试用例

创建一个名为UserControllerTest的测试类,并添加以下测试方法:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testSave() throws Exception {
        User user = new User();
        user.setUsername("Tom");
        user.setAge(20);

        mockMvc.perform(post("/user/save")
                .contentType(MediaType.APPLICATION_JSON)
                .content(JSON.toJSONString(user)))
                .andExpect(status().isOk())
                .andReturn();
    }

    @Test
    public void testGetById() throws Exception {
        mockMvc.perform(get("/user/1"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.username", is("Tom")))
                .andExpect(jsonPath("$.age", is(20)))
                .andReturn();
    }

    // 省略其他测试方法
}

以上代码使用了Spring提供的MockMvc类来模拟请求和验证结果。

运行项目

在终端中进入项目所在的根目录,执行以下命令启动项目:

mvn spring-boot:run

然后可以在浏览器中访问http://localhost:8080/user/save来进行保存用户的操作,访问http://localhost:8080/user/1来获取ID为1的用户信息。

结束语

通过本文的介绍,我们学习了如何在SpringBoot项目中使用Hibernate来进行数据持久化操作。使用Hibernate可以简化数据库操作的代码,并提高开发效率。希望本文对你有所帮助。

内容来自老牛的个人网站:https://refblogs.com/article/392

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这里提供一个简单的 Spring Boot + JPA + Hibernate 配置实例,步骤如下: 1. 在 `pom.xml` 中添加以下依赖: ```xml <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Spring Boot Starter Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Hibernate Entity Manager --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.4.32.Final</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> ``` 2. 在 `application.properties` 中配置数据源和 JPA 相关属性: ```properties # 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 # JPA 配置 spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect ``` 3. 创建实体类,例如: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // 省略 getter 和 setter } ``` 4. 创建 Repository 接口,例如: ```java public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 5. 创建 Service 类,例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findByName(String name) { return userRepository.findByName(name); } public User save(User user) { return userRepository.save(user); } public void deleteById(Long id) { userRepository.deleteById(id); } } ``` 6. 创建 Controller 类,例如: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{name}") public List<User> findByName(@PathVariable("name") String name) { return userService.findByName(name); } @PostMapping public User save(@RequestBody User user) { return userService.save(user); } @DeleteMapping("/{id}") public void deleteById(@PathVariable("id") Long id) { userService.deleteById(id); } } ``` 这样就完成了 Spring Boot + JPA + Hibernate 的配置和使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java劝退师、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值