DB PK 를 화면에 직접 노출 시켰을 때 문제점
557
작성한 질문수 17
강의 내용을 보면 상품 목록 화면에서 item.id 값을 뿌려주고 있습니다.
이건 DB 에 저장된 item 테이블의 PK 값 일텐데, 문득 이런 생각이 들었습니다.
DB 데이터 관리를 위한 PK 를 클라이언트 단에 노출시켜도 되나요? (가급적 엔티티 객체를 클라이언트 단에 직접 노출시키지 말라고 하셔서, 이것도 비슷한 맥락으로 숨겨야되지 않을까 해서요)
답변 1
0
안녕하세요. 정배님, 공식 서포터즈 코즈위버입니다.
엔터티 객체를 클라이언트에 노출하지 말라는 의미는 엔터티를 바로 응답하지 말라는 의미입니다.
가령 백엔드에서 타임리프로 뷰 파일을 생성하는 경우 뷰 파일에서 엔터티에 직접 접근해 값을 사용하면 안됩니다. JSON응답(API) 형태일경우 엔터티를 통째로 응답값으로 반환하면 안됩니다.
그러나 어떤 게시글, 상품, 회원의 P.K는 노출되어도 상관없습니다. 리소스를 구별하는 유일한 식별자는, 프로그램에게 유용하지만, 사람에게도 유용한 정보입니다. 가령 고객이 특정상품에 대해 문의하고자 할 때 P.K값인 상품번호를 이용하면 의사소통이 명확해집니다. 이런 이유등으로 P.K를 노출하는 것은 괜찮습니다.
감사합니다.
0
안녕하세요 김만재님. 보충 설명을 드리면
컨트롤러에서 엔티티를 그대로 반환(return) 하지 말라는 의미이며,
서비스 단에서 엔티티 중 필요한 값만을 추린 DTO를 반환, 이 DTO를 컨트롤러에서 반환해야 한다는 의미입니다.
아이템의 고유번호, 회원의 고유번호 등이 DTO에 포함될 수 있으며 이런 값이 노출되는 것은 크게 상관없습니다.
감사합니다.
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
142
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
72
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





