SpringBoot에서 MySQL 그리고 Spring Data JPA를 연동하는 방법에 대해 알아보도록 하겠습니다. Show 1. 프로젝트에 의존성 추가하기build.gradle에 의존성을 아래와 같이 추가해줍니다.
2. application.properties 에 DB 정보 추가하기
spring.jpa.hibernate.ddl-auto=[ ]
[ 정보 추가 예시 ]
아래와 같이 정상적으로 실행되는 것을 볼 수 있습니다. 3. JPA Hibernate 엔티티(Entity) 생성하기자세한 Entity 매핑 설명은 참고
사용 어노테이션 정리
Memo 클래스 실행 위와 같이 테이블 생성에 필요한 SQL이 기록되는 것을 확인할 수 있습니다. DB에 생성된 테이블의 모습입니다. 4. JPA Repository 생성Spring Data JPA는 JPA의 구현체인 Hibernate를 이용하기 위한 여러 API를 제공합니다. 그 중에서 가장 많이 사용되는 것이 바로 JPA Repository라는 인터페이스 입니다.
작성된 MemoRepository는 JpaRepository를 상속하는 것만으로 모든 작업이 끝납니다.
5. 테스트를 통한 CRUD 기능 확인5.1 Create 테스트Insert를 할 때 Repository 객체의 save() 메소드를 사용합니다.
10개의 새로운 Memo 객체를 생성하고 MemoRepository를 이용해서 insert하는 것입니다. 5.2 Read 테스트Select를 할 때 Repository 객체의 findById() 메소드를 사용합니다. findById()를 통해 기본키를 넣어주면, 해당하는 객체를 Optional 타입으로 반환해줍니다.
findbyId()의 경우 Optional 타입으로 반환되기 때문에 한번 더 결과가 존재하는지를 체크하는 형태로 작성하게 됩니다. 5.3 Update 테스트수정 작업과 등록작업은 동일하게 save()를 이용해서 처리합니다. 내부적으로 해당 엔티티의 @Id값이 일치하는지를 확인해서 insert 혹은 update 작업을 처리합니다.
JPA는 엔티티 객체들을 메모리상에 보관하려고 하기 때문에 특정한 엔티티 객체가 존재하는지 확인하는 select가 먼저 실행되고 해당 @Id를 가진 엔티티 객체가 있다면 update, 그렇지 않다면 insert를 실행하게 됩니다. 5.4 Delete 테스트삭제 작업도 수정 작업과 동일한 개념으로 삭제하려는 엔티티 객체가 있는지 먼저 확인하고, 삭제합니다.
|