인프런 커뮤니티 질문&답변

인생은회전목마님의 프로필 이미지
인생은회전목마

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

일대일 [1:1]

개인 토이 프로젝트 진행 중인데 일대일 매핑 관련하여 질문이 있습니다.

작성

·

447

0

[질문 내용]
보안매체와 토큰이라는 엔티티 클래스가 있습니다.

보안매체 하나에 서버에서 부여받은 토큰을 따로 db에 저장하여 관리하려고 하는데요. 하나의 보안매체에서는 유효한 토큰 하나만 부여 가능하므로 OneToOne 관계로 관계를 맺었습니다. 그런데 이 토큰은 일정기간이 지나면 만료가 되고 결국 만료기간이 지나면 새로운 토큰을 생성해야합니다. 이렇게 된다면 하나의 보안매체에 여러개의 토큰이 매칭 될 수 있는데.. 이건 oneToMany 관계이고, 비지니스에서 쿼리 수행을 통해 만료 안된 토큰을 추출 해야하는 상황인걸까요? 조금 혼선이 옵니다 ㅠㅠ 도움 주시면 감사하겠습니다.

답변 1

0

안녕하세요. 정정훈님, 공식 서포터즈 OMG입니다.

하나의 보안매체에 만료가 되거나, 되지 않은 상태의 토큰이 연관관계를 맺는다면 일대다로 보는게 맞는것 같습니다 :)

토큰을 List로 하여, 토큰에는 만료여부에 대한 상태 필드를 두고 질문에 남기신대로 토큰을 추출하면 될 것 같습니다 ^^

감사합니다.

답변해주셔서 감사합니다.

그럼 연관관계 매핑을 할 때 이런식으로 엔티티와의 비즈니스 특성에 따라 1:1 / 1:n 매핑을 하는게 맞을까요? 그냥 원론적인 개념으로만 봤을 때 보안매체에는 토큰 하나만 부여될 수 있다. 인데 비지니스적인 관계를 따지고 보면 한 보안매체에는 여러개의 토큰 중 활동상태(만료안된) 토큰을 이용한다라는 관점에서 1:n 이 되는 것 처럼요. 그리고 일대일로 해놓고 토큰을 추출하는 jpql으로 활동중인 토큰을 select 하는건 잘못된 생각일까요? ㅠ

답변이 늦었습니다. 추가로 질문도 남겨주셨더라구요.

 

연관관계 매핑을 할 때 이런식으로 엔티티와의 비즈니스 특성에 따라 1:1 / 1:n 매핑을 하는게 맞을까요? 그냥 원론적인 개념으로만 봤을 때 보안매체에는 토큰 하나만 부여될 수 있다. 인데 비지니스적인 관계를 따지고 보면 한 보안매체에는 여러개의 토큰 중 활동상태(만료안된) 토큰을 이용한다라는 관점에서 1:n 이 되는 것 처럼요.

=> 네, 비즈니스 특성에 따라 연관관계 매핑을일대일로 할지 일대다/다대일로 할지 정하시면 될 것 같습니다. 현실속 세계는 '나'라는 존재의 하나지만, 게임속 나라는 캐릭터는 게임에 따라 여러개를 생성할 수 있는 것처럼 내가 개발하려는 세계가 어떤 세계인지에 따라 그 특성(연연관계)은 달라질 수 있습니다.

 

그리고 일대일로 해놓고 토큰을 추출하는 jpql으로 활동중인 토큰을 select 하는건 잘못된 생각일까요? ㅠ

=> 이 부분은 개발하려는 프로그램에 따라 달라질 것 같습니다. 조금 더 구체적인 코드 예시가 있으면 아는 선에서 답변을 드릴 수 있을 것 같아요.

 

인생은회전목마님의 프로필 이미지
인생은회전목마

작성한 질문수

질문하기