作用:用于与数据库交互,提供了 JPA 支持,并集成了 Hibernate。
引入方式:在 pom.xml
中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
功能:
- 自动配置了
EntityManager
、DataSource
等数据库相关的 Bean。 - 简化了 JPA 的配置,只需要提供基本的数据库连接信息(如 URL、用户名、密码)。
- 提供了
CrudRepository
和JpaRepository
接口,用于快速实现基本的增删改查功能。
配置项
使用 application.properties
文件进行配置
# 数据库连接 URL
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=your_password
# JPA 的方言(根据数据库类型选择相应的方言)
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
# JPA 自动生成的 DDL 操作(更新表结构)
spring.jpa.hibernate.ddl-auto=update
# 打印 SQL 日志
spring.jpa.show-sql=true
your_database_name
为你实际的数据库名称。MySQL8Dialect
是针对 MySQL 8 的方言。如果你使用的是其他版本或数据库,需要修改为对应的方言。-
update
:如果表结构有变化,会自动更新。 -
create
:每次启动时重新创建表(会丢失数据)。 -
create-drop
:创建表,在会话结束时删除表。 -
none
:不会做任何表结构管理。
true
时会在控制台打印 SQL 语句,方便调试。使用 application.yml
文件进行配置
也可以使用 application.yml
格式进行配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
username: root
password: your_password
jpa:
database-platform: org.hibernate.dialect.MySQL8Dialect
hibernate:
ddl-auto: update
show-sql: true
这个配置和 application.properties
的效果相同,只是格式不同(YAML 格式)
示例代码:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Getters and setters...
}
public interface UserRepository extends JpaRepository<User, Long> {
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
通过引入 spring-boot-starter-data-jpa
,可以轻松地与数据库交互,Spring Boot 自动配置了 JPA 所需的基础设施。