inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 데이터 JPA

관계매핑에 관한 조언 좀 부탁드립니다.

해결된 질문

198

봄봄모바일

작성한 질문수 2

0

인프런 개인개정으로 Restful API 강좌 듣고 큰 도움 받았습니다. 

사내 프로젝트 진행하면서 JPA 가 필요해 이 강좌를 듣고 있는데요. 

아직 전부 강좌를 보진 못했습니다. 

 

프로젝트 진행하면서 막막한 부분이 있어 고민하다고 기선님께 여쭤봅니다.

조언 좀 부탁드려도 될까요?

 

Event 클래스와 Account 계정이 매핑관계가 있습니다.  ( 아마 기선님이 manager 필드로 선언했던 걸로 기억합니다. )

 

저는 JWT 토큰을 이용해 리소스서버를 인증서버와 분리해서 구축했습니다. 

토큰에 필요한 정보를 담아 리소스 서버를 호출합니다. 

 

JWT 의 경우 별도의 토큰스토어가 없어 Account 객체를 저장할 수 없습니다. 

일단, 대안으로 인증시 Client 에게  JWT 안에 account Id 를 담아 응답했습니다. 

 

Client 는  인증서버에서 받은 이 JWT 토큰으로  리소스서버의 create-event  API 를 호출하는데요. 

이 경우 리소스 서버에서 @AuthenticationPrincipal 로 Account 객체를 추출할 수 없어, 

JWT 안에 있는 account Id 로  repository 통해 DB에서 Account 객체를 얻어, Event 에 주입하고 

Event 를 생성합니다. 

 

Account 객체를 맵핑관계로 갖고 있는 모든 Entity( Event 같은 )  는 리소스 서버 호출 시 항상 이렇게 DB 에서 Account 를 얻어 와야 

하는 상황인데요. 

 

Event 클래스에 Account '객체' 를 매핑하지 않고 Account 의 'id' 만 매핑 관계로 설정할 순 없을까요?

그럼 리소스서버에서 Event 생성시에 Account 객체를 매번 쿼리하지 않고 요청 JWT 에 들어있는 'id' 만 Event 

에 설정하고 생성할 수 있을텐데요. 

 

혹시 이런 매핑관계를 설정할 수 있을까요?

( 객체가 아닌 객체의 id 로 매핑관계를 설정 )

 

혹시 이런경우  Account 객체를 id 만 설정해서 생성하고 Event 객체에 주입한 후 

Event 를 생성하기도 하나요???

 

조언 부탁드립니다. 

감사합니다. 

 

 

 

 

 

 

java JPA spring

답변 2

1

백기선

필요에 따라 그렇게 하셔도 됩니다. Event에서 Account가 아니라 int나 long으로 accountId를 갖고있게 하면 되는데 대신 관계형 DB가 보장하는 참조무결성이나 객체지향적인 네비게이션은 포기해야겠죠.

굳이 Account 객체 전부가 필요한 경우가 아니라면 account의 id만 설정한 Account객체를 Event에 설정해도 됩니다. DB에서 매번 Account 객체를 조회해올 필요 없이요. 저라면 그런식으로 할 거 같네요.

0

봄봄모바일

소중한 조언 진심으로 감사드립니다. 

spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴

0

532

1

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

0

392

1

comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?

0

406

1

@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?

0

450

0

PersistenceContext 관련 질문드립니다.

0

334

1

지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다

0

338

1

transaction 구간이 길어질 경우의 처리방법 문의드립니다.

0

905

1

docker postgres

0

291

1

Multiple DataSource 사용 시 transaction 관련 질문 드립니다.

0

2907

1

entity 중 null이 아닌 필드만 update 할 방법이 있을까요?

0

1190

1

Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?

0

385

1

엔티티를 상속받는 DTO가 일반적인가요?

1

1847

1

커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.

0

339

1

연관관계 매핑 어떤식으로 해야될지 감이 안잡힙니다.

0

566

4

EntityManager 주입시 Annotation관련 질문드립니다.

0

565

1

클래스 기반 프로젝션 사용 관련 질문

0

560

1

save 메서드 질문드립니다.

0

258

1

복잡한 통계쿼리도 JPA로 가능한가요?

2

5592

1

find 와 get의 차이가 무엇인가요?

0

890

1

실무에서 JPA 할 때 FK로 개발할때 연관관계를 꼭 맺어주어야 하나요?

0

998

1

\dt Did not find any relations.

0

480

1

소스코드는 어디서 볼 수 있을까요?

1

286

1

table 생성과 select 문에 대한 질문

0

172

1

스프링 데이터 RepositoryTest 관련 질문

0

2170

2