pom.xml에서 spring-data-jpa, h2 database 디펜던시를 추가해준다.
원래 ClubStore 인터페이스를 구현하는 클래스는 ClubMapStore 하나 여서 의존성 주입 할 때 바로 들어갔었다.
( IoC, DI 할 때는 보통 인터페이스 하나만 구현 )
하지만 지금은 ClubJpaStore 를 만들 것이다. -> 무슨 의존성을 주입해야 하는지 모호함 -> 에러
해결법 : 1. @Qualifier 로 어떤 클래스를 주입 받을 거다 명시
2. ClubMapStore를 스프링 빈으로 스프링 IOC 컨테이너에 등록되는 것을 막기 위해 @Repository 를 지운다.~
----------------------------------------------------------------------------------------------------------------------
TravelClub 이라는 도메일 객체가 존재하지만 객체세상과 테이블세상 간에 여러가지 문제가 생길 수 있으므로 ( 임피던스 불일치 ) 이런 문제를 피하기 위해 별도의 매핑 클래스(Jpo)를 만든다.
저렇게 하고 앱 실행하면
이렇게 테이블이 만들어진다.
@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
'Java, Spring > Spring5 기초 정리' 카테고리의 다른 글
5-6강 Spring Data JPA 실습(4) (0) | 2022.07.28 |
---|---|
5-5강 Spring Data JPA 실습(3) (0) | 2022.07.28 |
5-2강 Spring Data JPA의 이해(2) (0) | 2022.07.28 |
5-1강 Spring Data JPA의 이해(1)(중요) (0) | 2022.07.27 |
4-6강 Web 프로그램 구현 실습(4) (0) | 2022.07.27 |