Chris940915 / geo_benchmark

0 stars 0 forks source link

JPA를 선택하는 이유. #11

Open Chris940915 opened 3 years ago

Chris940915 commented 3 years ago
  1. 기존 코드가 ORM 작성 기존 구조와 mapping에 쉬움.

image

image 일반적인 웹 어플리케이션 계층 구조

데이터 흐름이 아니라 객체 흐름으로 개발하게 된다

  1. 유지 보수 MyBatis는 필드가 수정되면 모든 관련 SQL(insert, select, update)을 변경해야 하지만, JPA는 SQL을 처리하기 때문에 엔티티 클래스의 해당 필드만 수정하면 된다.

    
    @PostMapping("/api/v2/members")
    public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){
    Member member = new Member();
    member.setName(request.getName());
    
    Long id = memberService.join(member);
    return new CreateMemberResponse(id);
    }

@Data static class CreateMemberRequest { private String name; }

@Data static class CreateMemberResponse { private Long id;

public CreateMemberResponse(Long id){
     this.id = id;
}

}


3. 생산성, 확장성 
column이 추가되거나 수정되면 수정해야하는 부분이 많다. 

3. 빠른 속도로 개발이 가능.
빌드 과정에서 오류가 발견되지않는 SQL Mapper와 달리 type safe라는 개념을 통해 간단한 빌드 과정에서 생기는 오류를 잡을 수 있다. 

4. 간단한 쿼리에 더 최적화.
우리의 프로젝트 SQL은 find, filter, join 정도의 간단한 쿼리만 사용. 
5. 추세
Chris940915 commented 3 years ago

https://www.slideshare.net/madvirus/dbjpaddd

Chris940915 commented 3 years ago

https://m.blog.naver.com/PostView.nhn?blogId=admass&logNo=220870636605&proxyReferer=https:%2F%2Fwww.google.com%2F

Spring JPA의 경우에는 객체 단위로 CUD가 가능합니다. 일반적으로 CUD는 단일 테이블에 대하여 작업을 하는 경우가 많은데 Mybatis에서 하게 되면 해당 쿼리를 직접 짜고, 들어오는 Parameter에 대하여 모두 확인하여 처리해야 하는 경우가 많다.

그러나 MyBatis의 장점을 무시할 순 없습니다. ER-DB를 사용하는 경우 자기가 원하는 Query를 짜서 직접 데이터를 손쉽게 전달하고 처리할 수 있다는 장점이 있죠. 특히, Spring JPA에서 활용하는 상당히 복잡한 나름대로의 SQL을 배워야 하고, 테이블 Join을 하게 될 경우 해당 조건을 객체구조에도 녹여내야 하는 등 배우고 익혀서 적용해야 할 포인트가 많아지게 됩니다.

따라서 CRUD의 입장에서 볼 때 이 두 기능은 다음과 같은 부분에 장단점을 가지고 있습니다. 1) Spring JPA : CUD 2) Mybatis : R

Chris940915 commented 3 years ago

내 의도대로 되었는지 모니터링.