본문 바로가기

강의 내용 정리/Spring5 기초 정리

5-4강 Spring Data JPA 실습(2)

pom.xml에서 spring-data-jpa, h2 database 디펜던시를 추가해준다.

 

원래 ClubStore 인터페이스를 구현하는 클래스는 ClubMapStore 하나 여서 의존성 주입 할 때 바로 들어갔었다.

( IoC, DI 할 때는 보통 인터페이스 하나만 구현 )

하지만 지금은 ClubJpaStore 를 만들 것이다. -> 무슨 의존성을 주입해야 하는지 모호함 -> 에러

 

해결법 : 1. @Qualifier 로 어떤 클래스를 주입 받을 거다 명시

2. ClubMapStore를 스프링 빈으로 스프링 IOC 컨테이너에 등록되는 것을 막기 위해 @Repository 를 지운다.~

 

 

 

----------------------------------------------------------------------------------------------------------------------

 

 

TravelClub 이라는 도메일 객체가 존재하지만 객체세상과 테이블세상 간에 여러가지 문제가 생길 수 있으므로 ( 임피던스 불일치 ) 이런 문제를 피하기 위해 별도의 매핑 클래스(Jpo)를 만든다. 

저렇게 하고 앱 실행하면

@Table 붙이기 전이라 클래스이름=테이블이름

이렇게 테이블이 만들어진다. 

@Entity로 등록된 클래스 이름(TravelClubJpo)으로 테이블이 생성됨.

(미쳤다.....)

 

우리의 목적 : TravelClub이라는 도메인객체로부터 데이터를 받아서 그 데이터들로 JPO를 만들어서 그 JPO객체로 테이블을 만든다.

우리의 목적을 생성자를 통해 각각 넣어준다. ( 쉬운 내용 )

BeanUtils의 copyProperties 라는 static메서드로 베껴오고 싶은 클래스, 지금 클래스를 넣으면 위 4줄과 같은 효과.

장점 : 실제 값을 가져온다 + 테이블을 안전하게 만들 수 있다. (Jpo 클래스이용)

 

이거 씀 ------->>    import org.springframework.beans.BeanUtils;

 

 

엔티티객체를 JPO 객체로 변환했다면 다시 도메인객체로 만들어주는 작업이 필요 ( 왜 필요한지 이해안됨 )

-> 다음 강의 듣고 이해됨. 반환할 때 도메인객체로 반환할 일이 있음.

 

 

 

 

( 지금 까지는 SpringDataJpa는 쓰지도 않음. 모두 그냥 JPA ) = @Id, @Entity, @Table 등등..

----------------------------------------------------------------------------------------------------------------------

실제로 ClubJpaStore에서 데이터를 DB에 CRUD하려면 EntityManager를 사용하여야한다.

-> EntityManager의 관리 또한 Spring Data에게 맡긴다. -> Spring Data Jpa

 

 

 

 

 

 

 

 

 

 

 

 

 

 자료를 참고하였습니다.

 

 

꾸준히 다시보자.

 

1. 220730

2. 220812

3. 220915

Recent Posts
Popular Posts
Recent Comments