- Entity 를 노출하지 말라.
Entity 를 노출하지 말라
당연한 이야기인데, 구체적으로 예시를 들어서 Entity를 API에 노출(request command, query, response 등으로)했을때 어떤 문제가 있을지를 예제코드로 알아보았다. 나의 경험상 Entity의 변경은 자주 발생하는 일은 아니지만 가끔 있을 수 있는 일인데 이를 API 스펙으로 포함시켜 버리면 API 스펙이 바뀌는 문제가 발생할 수 있다. API 스펙이 바뀌면 클라이언트까지 변경이 전파가 되기 때문에 잘못된 일이라 할 수 있다. 또 지연로딩을 사용하는 필드의 경우에 프록시객체가 할당이 되므로 응답시에 초기화가 되지 않아서 error 가 발생하게 된다.
철저하게 계층을 구분해서 DTO를 따로 만들어서 해당 책임과 역할을 주는 것이 맞다.