1. 프로젝트 설정
Spring Boot 프로젝트를 생성하고, pom.xml
또는 build.gradle
파일에서 필요한 의존성을 추가합니다.
주로 spring-boot-starter-data-jpa
를 추가하여 JPA 관련 기능을 사용할 수 있다.
2. Entity 클래스 생성
JPA에서는 데이터베이스의 테이블을 Java 클래스로 표현.
@Entity
어노테이션을 사용하여 Entity 클래스를 정의합니다. 각 필드는 데이터베이스의 컬럼과 매핑된다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// getters, setters, constructors 등
}
3. Repository 인터페이스 생성
Repository는 데이터베이스 조작을 위한 메서드를 제공.
Spring Data JPA는 Repository 인터페이스를 생성하고 내장된 CRUD 메서드를 사용하여 데이터베이스 조작을 지원한다.
public interface UserRepository extends JpaRepository<User, Long> {
// 추가적인 메서드 정의 가능
}
4. 데이터베이스 설정
application.properties
또는 application.yml
파일을 사용하여 데이터베이스 연결 정보를 설정한다.
데이터베이스 URL, 사용자 이름, 암호 등을 설정하여 데이터베이스에 연결한다.
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydatabase
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
5. 서비스 및 컨트롤러 생성
필요에 따라 서비스 클래스와 컨트롤러를 생성하여 비즈니스 로직을 작성하고, HTTP 요청에 대한 응답을 처리한다.
서비스 클래스:
@Service
public class UserService {
private final UserRepository userRepository;
// 생성자 주입
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// 비즈니스 로직 구현
// 예: 유저 생성, 조회, 업데이트, 삭제 메서드 구현
}
컨트롤러 클래스:
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
// 생성자 주입
public UserController(UserService userService) {
this.userService = userService;
}
// HTTP 요청에 대한 핸들러 메서드 구현
// 예: GET, POST, PUT, DELETE 매핑
}
6. 애플리케이션 실행
Spring Boot 애플리케이션을 실행하고, 정의한 엔티티 클래스를 통해 데이터를 데이터베이스에 저장, 조회, 수정, 삭제할 수 있다.
이것은 Spring Boot와 JPA의 간단한 개요이며, 각 단계는 더 많은 세부 사항과 기능으로 확장될 수 있다. 초보자들을 위한 자세한 설명과 함께 예제 코드를 제공하여, 각 단계가 어떻게 구현되는지 보다 명확하게 설명할 수 있다.
Spring Boot에서 JPA를 사용하는 단계별 설명
1. 프로젝트 설정
- Spring Initializr 또는 Maven/Gradle을 사용하여 Spring Boot 프로젝트를 생성합니다.
pom.xml
또는build.gradle
파일에 Spring Boot Starter 및 JPA 의존성을 추가합니다.
2. Entity 클래스 생성
@Entity
어노테이션을 사용하여 JPA에서 관리되는 엔티티 클래스를 만듭니다.- 필드와 데이터베이스 테이블 컬럼 간의 매핑을 위해 JPA 어노테이션을 사용합니다.
3. Repository 인터페이스 생성
JpaRepository
를 상속하는 인터페이스를 생성하여 데이터베이스 조작을 위한 메서드를 정의합니다.- 내장된 메서드를 통해 CRUD 작업을 수행할 수 있습니다.
4. 데이터베이스 설정
application.properties
또는application.yml
파일에서 데이터베이스 연결 정보를 설정합니다.- 데이터베이스 종류, URL, 사용자 이름, 암호 등을 설정하여 데이터베이스에 연결합니다.
5. 서비스 및 컨트롤러 생성
- 서비스 클래스를 만들어 비즈니스 로직을 정의합니다.
- 컨트롤러를 생성하여 HTTP 요청을 처리하고, 서비스 클래스의 메서드를 호출하여 데이터를 반환하거나 조작합니다.
6. 애플리케이션 실행
- Spring Boot 애플리케이션을 실행하여 내장된 톰캣 서버를 시작하고, 정의된 엔티티 클래스를 통해 데이터베이스 조작을 수행합니다.
간단한 예시 코드
Entity 클래스 예시:
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// getters, setters, constructors 등
}
Repository 인터페이스 예시:
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findByName(String name);
// 기타 추가적인 메서드 정의 가능
}
서비스 및 컨트롤러 예시:
@Service
public class ProductService {
private final ProductRepository productRepository;
// 생성자 주입
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// 기타 비즈니스 로직 구현
}
@RestController
@RequestMapping("/api/products")
public class ProductController {
private final ProductService productService;
// 생성자 주입
public ProductController(ProductService productService) {
this.productService = productService;
}
@GetMapping
public ResponseEntity<List<Product>> getAllProducts() {
List<Product> products = productService.getAllProducts();
return new ResponseEntity<>(products, HttpStatus.OK);
}
// 기타 HTTP 요청 처리 메서드 구현
}
위의 예시는 Spring Boot와 JPA를 사용하여 간단한 상품 관리 시스템을 구축하는 과정을 보여준다.
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] JWT(JSON Web Token) (1) | 2023.11.17 |
---|---|
[TIL]Query Methods (0) | 2023.11.16 |
[TIL ]Entity (1) | 2023.11.14 |
[TIL] JPA(Java Persistence API) (0) | 2023.11.13 |
[TIL] IoC Container와 Bean (0) | 2023.11.10 |