SpringBoot & Hibernate

  1. 1. SpringBoot整合Hibernate
    1. 1.1. 配置数据库与Hibernate
    2. 1.2. Entity层
    3. 1.3. Repository层

SpringBoot整合Hibernate

在SpringBoot中使用Hibernate进行CRUD操作。

数据库为MySQL

配置数据库与Hibernate

Hibernate导入相关Maven依赖即可

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

而后配置resources/application.properties文件:

1
2
3
4
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://172.17.0.2
spring.datasource.username=*******
spring.datasource.password=*****

Entity层

本层是对应数据库中相关Column

使用注解@Entity标注该类为Entity类

1
2
3
4
5
6
7
8
9
10
11
12
@Entity
@Data
@NoArgsConstructor
public class User {

@Id
@GeneratedValue
private int UserID;

private String UserName;

}

其中,UserID使用@Id@GeneratedValue标记为为主键并生成值。

@Data@NoArgsConstructor为lombok相关注解,作用为自动配置get、set方法以及无参构造器。

Repository层

本层是使用Hibernate对数据库进行间接CRUD操作

使用注解@Repository标记该接口为Repository接口

1
2
3
4
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {

}

其中JpaRepository<User, Integer>为Hibernate的自带ORM接口。有包括findAll, findAllById, saveAll, save, deleteInBatch, getOne, flush等方法。

其中flush为Hibernate独有的刷新机制。

Hibernate本身也构建了一层缓存,在save时,只有flush后才会被插入数据库。减少了与数据库的直接操作从而降低了数据库的负担。

同样的,如果需有 一些特殊的查询,也是添加在此类中.Hibernate同时也支持通过规范方法名构建。如

1
List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);

或者自定义搜索语句:

1
2
@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
User findByEmailAddress(String emailAddress);

更多支持可查看官网:Spring boot JPA Repositories


至此,数据库相关已经构建完毕。余下的便是具体的业务与逻辑。

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Service
public class UserService {

@Autowired
private UserRepository bookRepository;

public List<User> list() {
return bookRepository.findAll();
}

public User insert(User user){
return bookRepository.save(user);
}

}