[Spring] Spring Data JPA

JunWoo An·2023년 11월 10일
0

스파르타코딩클럽

목록 보기
17/46

Java환경에서 JPA를 이용하여 서버를 구현하였다. 그럼 SpringBoot에서의 JPA는?

먼저 말하자면 SpringBoot는 Java에서보다 더욱 더 쉬워졌다.어떤 면이 쉬워졌는가는 설정부터 시작해서 차차 알아보자

설정

우선 build.gradle에 spring-boot-starter-data-jpa 를 추가해서 라이브러리를 생성해야한다.

다음으로 앞선 자바에서 META-INF 디렉토리를 만들고 그안에 persistence.xml파일을 생성해서 유닛 name 설정, DB설정, 하이버네이트 설정 등등 했었다. 하지만 SpringBoot에서는 해당절차를 간단하게 위와 같이 DB설정과 하이버네이트 설정 두가지만 applicaton.properties의 저장하면 끝이난다.

여기까지가 설정이고 이제 다음으로 가보자.

em, emf

@PersistenceContext
EntityManager em;

앞선 자바 환경에서는 위와 같이 일일히 개발자가 em과 emf를 정의하여 사용했다면 SpringBoot에서는 @PersistenceContext 에너테이션을 통해 앞서 설정한 DB정보를 토대로 자동으로 em과 emf를 생성된 em과 emf를 주입받아 사용할수있다.

트랜잭션

트랜잭션 자바환경에서는 일일히 begin과 commit으로 제어해왔다면 Spring boot는 아래와같이 @Transactional 에너테이션을 통해 해당메서드 단위로 트랜잭션이 이뤄지며 클래스단위로 사용된다면 해당 클래스 내의 모든 메서드가 트랜잭션 기능이 부여된다.또한 Service 부터 Repository까지 트랜잭션을 유지하기위해 부모와 자식관계의 메서드에서 부모의 메서드에 트래잭션이 걸린다면 자식메서드의 트랜잭션은 무시가되는 트랜잭션 전파를 지원한다.

SimpleJpaRepository

Spring Data JPA는 JPA를 손쉽게 사용하기 위한 하나의 모듈이다. 다시 말해서 JPA를 추상화시킨 Repository 인터페이스를 제공하는 모듈이다. 이를 통해 기존의 Repository 클래스의 여러 필드와 메서드 등이 이제 JpaRepository 인터페이스를 상속받은 인터페이스가 스캔이 될때 해당 인터페이스 정보를 토대로 자동으로 SimpleJpaRepository클래스를 생성하며 Bean으로 등록된다. 매우 간단해진다는 말이다.

이렇게 간단히 상속받은 인터페이스로 구현만 하면 여러기능을 가져와서 사용할수있다.

profile
도전하는 사람

0개의 댓글