코드스테이츠_국비교육/[Section3]

50.01_[Spring MVC] JPA 기반 데이터 액세스 계층_Spring Data JPA_22.11.02

생각없이 해도 생각보다 좋다. 2022. 11. 3. 00:53

>Spring Data + JPA
-Spring Data + JDBC
: Spring Data 패밀리~
: JPA, JDBC 기술만 다르고 데이터 액세스 접근 방식은 Spring Data이기 때문에 거의 유사하다.
: 추상화 된 데이터 액세스 접근 방식으로 구성되어 있다. (아마 repository 얘기인 듯)

>JpaRepository
: Spring Data JPA에서는 Repository 인터페이스를 생성할 때, JpaRepository를 상속받아쓴다. (JDBC에서는 CrudRepository
: JPA에 특화된 많은 기능이 포함되어 있음.
: <>내에 들어가는 인자는 똑같다.

>JPQL
: DB table이 아닌 entity 객체 기준으로 작성하는 JPA의 쿼리문
: SQL 쿼리문이 아님!
: 하지만 속성값으로 nativeQuery = true를 주면 SQL 쿼리로 작성할 수 있다.

 

 

Service 계층과 DB 와의 흐름

1. Service 계층에서 Id와 같은 식별자(unique)를 제공받아 식별자에 해당하는(포함하는) data가 있는지 확인하는 메서드를 만든다.
확인하는 방법은 두가지로,
첫째는 DB에 없을 시, 즉 null 일 경우 DATA가 없다는 예외를 날리고 null이 아닐 경우 해당 data를 반환하는 방법이다.
둘째는 DB에 있는지 유무만 확인하는 방법으로, 즉 null 이 아닐 경우 DATA가 있다는 예외를 날리는 방법이 있다.

2. CRUD 작업 메서드를 작성하며 첫 시작을 항상 1번 메서드로 시작한다.
즉, 인자로 Data를 제공받으면 data에서 getter로 식별자를 가져와서 DB에 해당 식별자를 포함한 data가 있는지 확인하고, 인자로 식별자를 제공받으면 식별자로 바로 DB에서 해당 식별자를 포함한 data가 있는지 확인한다.

3. 확인 된 data로 CRUD 작업을 한다.

+Optional이라는 래퍼 클래스로 값을 감싸 null을 받을 수 있게하고, 부가적으로 null인지 아닌지의 유무를 확인하는 Optional 메서드를 사용하면 좋다.