반응형
Spring Boot와 MySQL을 연동하는 방법
Spring Boot는 다양한 데이터베이스와 쉽게 연동할 수 있도록 설계되었습니다. 이 글에서는 MySQL 데이터베이스를 Spring Boot 애플리케이션과 연동하는 방법을 단계별로 설명합니다.
1. MySQL 설치 및 데이터베이스 준비
MySQL 설치:
MySQL이 로컬 또는 원격 서버에 설치되어 있어야 합니다. MySQL 다운로드 페이지에서 운영 체제에 맞는 버전을 설치하세요.데이터베이스 생성:
MySQL에 접속한 뒤, 사용할 데이터베이스를 생성합니다:CREATE DATABASE springboot_db;
2. 프로젝트 설정
- Spring Boot Starter 의존성 추가
pom.xml
파일에 MySQL과 Spring Data JPA 의존성을 추가합니다:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Gradle을 사용하는 경우:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java'
}
- application.yml 또는 application.properties 설정
MySQL 연결 정보를 설정 파일에 추가합니다.
application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot_db
username: root
password: yourpassword
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_db
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
3. 엔티티(Entity)와 리포지토리(Repository) 생성
- 엔티티 클래스 작성
데이터베이스 테이블과 매핑되는 엔티티 클래스를 작성합니다:
import jakarta.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false, unique = true)
private String email;
// Getter와 Setter
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
- 리포지토리 인터페이스 작성
Spring Data JPA를 사용해 데이터베이스 작업을 처리할 리포지토리를 생성합니다:
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
4. 서비스와 컨트롤러 작성
- 서비스 클래스 작성
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User saveUser(User user) {
return userRepository.save(user);
}
}
- 컨트롤러 작성
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.saveUser(user);
}
}
5. 애플리케이션 실행 및 테스트
Spring Boot 애플리케이션 실행:
애플리케이션을 실행하면 설정된 MySQL 데이터베이스와 자동으로 연결됩니다. JPA 설정(ddl-auto=update
)에 따라 필요한 테이블이 자동으로 생성됩니다.Postman으로 테스트:
- GET 요청:
http://localhost:8080/api/users
(사용자 목록 조회) - POST 요청:
http://localhost:8080/api/users
(사용자 생성){ "name": "John Doe", "email": "john.doe@example.com" }
- GET 요청:
6. 추가 설정
Connection Pool 설정:
HikariCP를 사용한 커넥션 풀 설정을 추가하여 성능을 최적화할 수 있습니다:spring: datasource: hikari: maximum-pool-size: 10
프로파일 별 설정:
개발, 테스트, 프로덕션 환경에 따라 다른 설정을 사용하려면 Spring Profiles를 활용하세요:spring: profiles: active: dev --- spring: profiles: dev datasource: url: jdbc:mysql://localhost:3306/dev_db --- spring: profiles: prod datasource: url: jdbc:mysql://localhost:3306/prod_db
반응형
'Spring Boot' 카테고리의 다른 글
Spring Boot에서 의존성 주입(Dependency Injection)을 사용하는 방법 (0) | 2025.01.08 |
---|---|
Spring Boot 프로젝트를 빌드하고 실행하는 방법 (Maven 활용) (0) | 2025.01.08 |
Spring Boot에서 API 문서를 작성하는 쉬운 방법: Swagger (0) | 2025.01.08 |
Spring Boot에서 데이터 유효성(Validation) 검사를 적용하는 방법 (0) | 2025.01.08 |
Spring Boot에서 JSON 데이터를 보내고 받는 방법 (0) | 2025.01.08 |