🙋 Springboot, JPA를 활용하여 프로젝트를 만들 때 어떤 순서로 생성할지 참고해보기.
1. 프로젝트 생성 :
- IntelliJ IDEA에서 새로운 스프링 부트 프로젝트를 생성한다. IntelliJ IDEA에서는 "File" -> "New" -> "Project..."를 선택한 후, "Spring Initializr"를 선택하여 프로젝트를 생성할 수 있다.
- (또는 https://start.spring.io/ 가서 Spring Initializr 직접 사용하여 가져오기는 방법도 있다.)
2.프로젝트 구성 :
- 프로젝트 구성에서는 사용할 언어, 스프링 부트 버전, 그리고 프로젝트의 기본 설정을 지정한다. JPA를 사용하기 위해 "Spring Data JPA"를 선택하고, 필요에 따라 다른 의존성도 추가한다.(ex. Spring Web)
3. 데이터베이스 설정 :
- application.properties 또는 application.yml 파일을 이용하여 데이터베이스 연결 정보를 설정한다. 데이터베이스 종류, URL, 사용자명, 암호 등을 지정한다.
4. 엔티티 클래스 생성 :
- JPA를 사용하여 데이터베이스와 상호작용하기 위해 엔티티 클래스를 생성한다. 이 클래스는 데이터베이스의 테이블과 매핑되어야 한다.
- 예시 코드(ex. 게시글을 나타내는 Post 엔티티)
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
// Getters and setters, constructors, and other methods
}
5. 리포지토리 인터페이스 생성 :
- JPA 리포지토리 인터페이스를 생성하여 데이터베이스 조작을 위한 메서드를 정의한다. 스프링 부트의 Spring Data JPA는 이 인터페이스를 구현해주는 프록시 객체를 생성한다.
- 예시 코드
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface PostRepository extends JpaRepository<Post, Long> {
// 제목에 특정 키워드가 포함된 게시글 검색
List<Post> findByTitleContaining(String keyword);
// 사용자명으로 게시글 찾기
List<Post> findByAuthor(String author);
// 제목과 내용에 특정 키워드가 포함된 게시글 찾기
List<Post> findByTitleContainingOrContentContaining(String title, String content);
}
- 여기서 PostRepository는 JpaRepository를 확장하고 있어서, 별도의 구현체 없이도 기본적인 CRUD 기능을 사용할 수 있습니다. JpaRepository는 기본적인 CRUD 외에도 다양한 메서드들을 제공합니다.
- 위의 코드에서 Post는 엔터티 클래스이며, Long은 엔터티의 식별자(ID)의 타입입니다.
6. 서비스 및 컨트롤러 생성 :
- 서비스 클래스에서는 비즈니스 로직을 정의하고, 컨트롤러에서는 클라이언트 요청에 대한 핸들링을 수행한다.
7. 웹 페이지 작성 :
- Thymeleaf, FreeMarker 등을 사용하여 웹 페이지를 작성하고, 컨트롤러에서 이를 렌더링하여 사용자에게 보여준다.
8. 프로젝트 실행 및 테스트 :
- IntelliJ IDEA에서 스프링 부트 애플리케이션을 실행하고, 브라우저 또는 API 테스트 도구를 사용하여 게시판이 제대로 작동하는지 확인한다.
9. 기능 확장 :
- 기본적인 CRUD(Create, Read, Update, Delete) 기능을 구현한 후, 검색, 정렬, 페이징과 같은 추가적인 기능을 구현해본다.
'Spring' 카테고리의 다른 글
[Spring AOP] @Cacheable 캐싱 적용 안 될 때 해결법 (Redis 캐시 확인) (3) | 2024.09.08 |
---|---|
[JPA] Spring Data JPA - Entity에 기본 생성자가 필요한 이유? (0) | 2024.02.18 |
[JPA] JPA 쿼리 생성 (쿼리 메소드, JPQL, QueryDSL) (1) | 2023.12.23 |
[Spring Boot] 동작 환경 - @ResponseBody, viewResolver (0) | 2023.09.15 |