Spring Boot JPA 연동: 데이터 등록 과정을 따라가다!
안녕하세요, 프로그래밍과 블로그를 함께 즐기는 여러분! 오늘은 Spring Boot를 활용하여 JPA를 통해 데이터를 등록하는 과정을 소개해 드리겠습니다. 이 포스트에서는 코드 작성 과정을 단계별로 살펴보고, JPA의 의존성 주입 및 테스트 방법까지 알아보도록 하겠습니다.
들어가며
Spring Boot를 사용하면 애플리케이션을 빠르게 개발할 수 있는데요, 특히 JPA를 활용하면 데이터베이스와의 인터랙션이 간편해집니다. 이번 포스트는 데이터 등록 과정을 중점적으로 다루므로, JPA와 Spring Boot에 대한 기본적인 이해가 필요합니다. 자, 그럼 시작해볼까요?
1. 의존성 주입
프로젝트를 시작하기에 앞서 JPA와 Lombok 라이브러리를 추가해야 합니다. 이를 위해 pom.xml
파일에 다음과 같은 의존성을 추가합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
이후 Lombok을 설치해야 하는데, 이곳에서 Lombok 설치 파일을 다운로드한 후, CMD에서 java -jar lombok.jar
명령어를 실행합니다. 설치할 IDE를 선택하면 설치가 완료됩니다.
2. 데이터베이스 설정
이제 실제로 데이터를 관리할 테스트 테이블을 생성해보겠습니다. Laravel이나 다른 ORM과 비슷한 방식으로, JPA는 엔티티 클래스를 통해 데이터베이스와 매핑합니다.
다음 내용으로 application.properties
파일을 설정해 줍니다.
spring.data.jpa.database-platform=org.hibernate.dialect.MariaDB102Dialect
spring.datasource.url=jdbc:mariadb://localhost:3306/DBNAME
spring.datasource.username=root
spring.datasource.password=1234
이렇게 설정하고 나면, JPA가 MariaDB와 정확히 연결될 수 있게 됩니다.
3. 엔티티 클래스 생성
JPA의 핵심은 데이터베이스의 테이블과 매핑되는 엔티티 클래스입니다. 아래와 같이 Board
클래스를 생성해 보겠습니다.
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name = "board")
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long boardno;
@Column(nullable = false, length = 50)
private String title;
@Column(nullable = false, length = 500)
private String content;
public Board(String title, String content) {
this.title = title;
this.content = content;
}
}
이 클래스는 board
라는 테이블과 연결되며 타이틀과 내용을 가지는 게시글을 정의하고 있습니다.
4. Repository 생성
이제 DB와의 상호작용을 담당할 Repository 클래스를 생성하겠습니다.
public interface BoardRepository extends JpaRepository<Board, Long> {
}
이렇게 설정하면 기본적인 CRUD(생성, 읽기, 수정, 삭제) 작업을 쉽게 구현할 수 있습니다.
5. Controller 생성
마지막으로 게시글을 요청하고 응답을 처리할 Controller
를 생성합니다.
@RestController
@RequiredArgsConstructor
@RequestMapping("/board")
public class BoardController {
private final BoardRepository boardRepository;
@GetMapping("list")
public List<Board> findAllBoard() {
return boardRepository.findAll();
}
@PostMapping("new")
public Board newContents() {
final Board board = Board.builder()
.title("TEST 제목")
.content("TEST 내용")
.build();
return boardRepository.save(board);
}
}
여기서 @RestController
를 사용하면 결과값을 JSON 형태로 반환할 수 있습니다.
6. 테스트 코드 작성
이제 작성한 코드가 잘 작동하는지 확인하기 위해 테스트 클래스를 만듭니다.
@RunWith(SpringRunner.class)
@SpringBootTest
public class BoardRepositoryTest {
@Autowired
BoardRepository boardRepository;
@Test
public void postAdd() throws Exception {
String title = "테스트 제목";
String content = "안녕하세요";
boardRepository.save(Board.builder()
.title(title)
.content(content)
.build());
List<Board> list = boardRepository.findAll();
Board board = list.get(0);
assertThat(board.getTitle()).isEqualTo(title);
assertThat(board.getContent()).isEqualTo(content);
}
}
JUnit을 사용하여 작성한 테스트 코드로, 게시글 추가 기능이 정상적으로 작동하는지를 검증합니다.
마무리하며
이번 포스트에서는 Spring Boot와 JPA를 활용하여 데이터 등록 과정을 살펴보았습니다. 데이터베이스와의 연동을 쉽게 할 수 있는 JPA의 매력을 느끼셨길 바랍니다. 향후 다른 기능들도 추가하여 보다 발전된 애플리케이션을 만들어 보세요!
궁금한 점이나 피드백이 있으시면 언제든지 댓글로 남겨 주세요. 다음 포스트에서 만나요!
'개발' 카테고리의 다른 글
효율적인 정렬 알고리즘 구현과 최적화 전략 배우기: 자바로 백준 2751번 문제 해결하기 (0) | 2024.11.13 |
---|---|
버블 정렬 알고리즘으로 오름차순 정렬 구현하기 (2) | 2024.11.13 |
자바에서 추상 클래스와 인터페이스의 차이점 이해하기 (0) | 2024.11.13 |
C++으로 카드 문자열 문제 해결하기: 데이터 구조의 활용법 (1) | 2024.11.13 |
Python으로 환경 변수 취약점을 이용한 파일 내용 읽기 실습 (1) | 2024.11.13 |