-
typeOrm에서 entity 의 필드값은 왜 private가 아닐까? (캡슐화x)개발/개발노트 2021. 6. 24. 18:24
이번에 typecript + nestjs 환경으로 구성된 프로젝트를 보며 궁금한 점이 생겼다.
javascript에서도 ORM 프레임 워크가 있으며 이는 jpa와 아주 유사했다.
눈에 익어 코드를 이해하는데 무리는 없었으나 큰 의문이 생겼다.
프로젝트 내 코드에서도, typeORM 공식 사이트 예제코드에서도 필드에 대한 접근제어자가 없는 것이다.
내가 알기론 javascript의 접근 제어자 default 값은 public이다.
따라서 entity의 필드값들의 타입은 public이란 것인데 높은 안정성이 필요한 개체 값이
변동 가능성이 높은 public인 것인지 의문이 든다.
많은 사람들이 변동가능성에 대해 생각을 했을 것인데 왜일까?
찾아보니 비슷한 내용이
https://stackoverflow.com/questions/51860432/typeorm-repository-create-not-setting-values
에 있고, 답변을 보면
ORM에서 private필드를 찾을 수 없다고 하는 걸 보면 일단 엔티티 변수에 바로 접근하는 것에 대한 문제를 생각하지 않는 것 같다.
왜 그럴까???
비슷한 생각과 답변
아무래도 TypeOrm에서 캡슐화는 필요하다면 사용자가 다음 단계를 거쳐 하면 된다고 생각하는 것 같다.
https://github.com/typeorm/typeorm/issues/3548
추가 생각 :
node.js가 애초에 가벼운 연산을 빠르게 작업하기 위해 나온 싱글스레드 비동기방식을 택하고 있기 때문에,
orm을 받아 변조하는 작업(이 작업만 보면 가볍지만 이 작업이 필요한 경우 무거울 수 있다고 생각해보았다)은 언어 특징에 맞지 않기 때문에 염두하지 않은 것 같다.
즉, 고정적으로 프로그래밍 원칙이나 기준등으로 판단하기보다는 + 해당 사용 언어의 특징, 나온 배경등을 생각하면 해당 이유를 조금은 덜 억지스럽게 이해할 수 있을 것 같다.
'개발 > 개발노트' 카테고리의 다른 글
면접 질문 답변으로 떠올리지 못했던 hash table에 대해 (0) 2021.08.08 새로운 프로젝트를 접하며 (0) 2021.06.16 gradle build시 jdk version 설정 (0) 2020.06.29 맥 사용포트 확인 (0) 2020.03.12 최근 바꾼 것들 (0) 2020.01.03 댓글