티스토리 뷰

반응형

ORM

ORM의 장점

    • 쿼리를 객체 관점으로 작성함으로써 재사용성을 높일 수 있다.
    • 반복되는 코드를 줄일 수 있다.
    • 특정 데이터베이스가 아닌 범용적으로 작성할 수 있다.
    • 생산성을 높일 수 있다.

ORM의 단점

    • ORM 관련 메소드를 모르면 문제를 해결하기 힘들다
    • 잘못 사용할 경우 N+1 문제 등 다양한 문제를 겪을 수 있다.
    • 연관관계를 잘못 맺을 경우 원하는 흐름으로 작성되지 않을 수 있다

Django ORM의 장점

    • 동적으로 처리하기 좋다.
      • 예를 들어 특정 필드의 결과값만 가져오고 싶으면 values 혹은 values_list를 사용하면 된다.
    • 조건절에 대해서 다양한 Lookup 필드를 제공해줘서 해당 lookup 필드를 알고 있다면 쉽게 사용할 수 있다.
    • 모든 결과는 lazy해서 실제로 사용하기 전까지 쿼리가 안날라간다.
    • dirty checking을 지원한다.

Django ORM의 단점

    • NoSQL의 경우에는 다른 라이브러리를 통해 해결해야 하기 때문에 장고 ORM의 기능을 사용할 수 없다.
    • 중복되는 쿼리가 많이 생긴다. 스프링의 경우에는 Repository Layer가 존재하는데 장고의 경우에는 Repository Layer가 존재하지 않기 때문에 Service Layer와 혼재되어 있다.( 단, manager 를 활용하면 어느 정도 해결해줄 수는 있다.)

JPA의 장점

    • DB에 종속적이지 않다.
      • RDBMS를 쓰다가 NoSQL로 전환해도 서비스 레이어에 변경되는 로직이 존재하지 않다.
    • 영속성 컨텍스트를 활용한 dirty checking을 사용할 수 있다.
    • 중복되는 코드를 줄일 수 있다. Repository Layer가 있기에 중복되는 쿼리를 한 곳에서 관리한다는 장점이 있다.

JPA의 단점

    • 특정 필드 결과값만 가져오기 번거롭다. ( QueryDSL을 사용하지 않는 경우)
    • 복잡한 쿼리의 경우에는 @Query 안에서 String으로 처리하기 때문에 테스트케이스를 작성하지 않는 경우 실수가 발생할 수 있다.
    • 단순한 경우에는 쿼리 네이밍으로 처리가 가능하지만 복잡한 경우에는 네이밍 방식으로 처리하기 힘들다.

FRAME WORK

Django의 장점

    • 빠른 생산성
      • 어드민 페이지 제공
      • 기본 CRUD를 처리할 수 있는 ViewSet 제공
      • 유저 권한 처리를 서비스 레이어 내에서 아닌 미들웨어로 처리함으로써 재사용성을 높일 수 있다.
    • 다양한 Python 라이브러리를 사용할 수 있다.
      • Mock 라이브러리를 통해 외부 API 테스트를 진행할 수있다. (ex> boto3)
      • Pandas를 통해 엑셀, CSV 파일 처리를 쉽게 할 수 있다.

Django의 단점

    • 다소 분리되지 못한 레이어
      • 스프링의 경우, 서비스 레이어, 컨트롤러 레이어로 분리되어 있지만 장고의 경우에는 두 레이어가 섞여있는 상태로 존재, 스프링의 경우에는 쿼리 결과를 모킹하여 순수로직을 테스트함으로써 POJO를 지킬 수 있지만, 장고의 경우에는 그렇게 처리하기 힘든 구조로 실제 쿼리를 날려서 테스트하는 것이 일반적

스프링의 장점

    • 역할과 분리가 제대로 이루어짐
      • IoC 컨테이너로 구성되어 있다는 점
      • DI 개념으로 의존 주입을 통해 처리가 된다는 점
        • 테스트할 때 mocking하기 용이하다는 점
        • 객체 단위로 다룰 수 있다는 점
          • 객체지향적으로 처리
          • 유지보수성이 올라감
      • 스프링 관련 다양한 오픈소스
        • Security, JPA, Cloud 등 존재스프링의 장점
    • 초반 러닝커브가 존재
    • 기본 언어가 자바로 자바스크립트나 파이썬에 비교하면 난이도가 있는 편
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함