less than 1 minute read

JPA API

엔티티를 외부로 노출시키지마라

개발에서 엔티티를 외부로 노출시키는 것은 좋은 설계가 아니다. 엔티티의 본래 역할은 영속성 컨텍스트와 데이터베이스 간의 매핑을 위해 사용하는 객체이다. 따라서 데이터베이스와 밀접한 관계가 아니라면 엔티티를 외부로 노출 시키는 것은 문제가 발생 할 수 있다.

api를 사용할때 별도의 DTO(Data Transfer Object)를 만들어 검증해야한다. DTO는 계층간 데이터 전송을 위한 목적으로 설계되는 객체로 사용이가능하다. DTO를 사용하게되면 필요시 검증 작업을 수행할 수 있으며, 잘못된 데이터가 로직에 영향을 주는 것을 막을 수 있다.

메서드 수정 기능 반환값 처리방법

개발에서 메서드들은 각 기등을 충실하게 집중하는 것이 중요하다.

한 가지 예시로 ‘수정’ 메서드가 존재한다했을때, 메서드의 기능은 ‘수정’의 역할에만 집중해야한다.

예) 1

@Transactional
  public void update(Long id, String name) {
      Member member = memberRepository.findOne(id);
      member.setName(name);
  }

예) 2

@Transactional
  public Member update(Long id, String name) {
      Member member = memberRepository.findOne(id);
      member.setName(name);
  }

1번째 방법은 수정작업을 진행후에 별도의 반환없이 메서드를 종료한다. 이는 ‘수정’ 기능에만 충실한 코드라 할 수 있으며, 데이터의 일관성을 유지하는데 도움을 줄 수 있다.

2번째 방법은 ‘수정’ 이후에 Member객체를 반환한다. 이는 ‘수정’ 기능에 ‘조회’ 기능을 더한 메서드로 기능을 2가지를 처리한다. 이런 코드는 추후 데이터 일관성을 보장하기 어렵다.

Updated: