마리!
125
2021-04-08 15:21:52
15
761

실무에서는 jpa와 mybatis중 어느쪽을 더 많이 사용하나요??


안녕하세요! 


국비지원 커리큘럼에서는 다들 mybatis만 있구.. jpa는 별로 언급이 없는 것 같아서 의문이 생겼습니다.

그리구.. ORM으로 DB의 코멘트라든지.. FK이름이나 시퀀스등..세부설정까지 다루기에는 한계가 있지 않을까..?! 하는 궁금증도 있습니다. ( 제 지식부족이라고는 생각하지만요..) 

DB모델링이 넘넘 중요한데.. 그걸 ddl-auto: create혹은 update..하면서 휙휙 없애고 만들고 하면 좀 위험하지 않을까..? 싶기두하구요. 


서론이 기네요!!

그래서!!

제 질문은 두가지입니다!


1. 실무에서는 jpa와 mybatis중 어느쪽을 더 많이 사용 or 선호하나요?? 


2. jpa의 경우.. DB를 모델링할때, 

처음부터 ORM식으로 java코드로 Entity를 짜버리는 방식과-  DB에서 만든다음에 java로 가져오는 방식중, 어느 쪽을 더 많이 이용하나요?


0
  • 댓글 15

  • kenu
    52k
    2021-04-08 15:42:20
    해당 게시물은 관리자에 의해 Tech Q&A에서 포럼로 이동 되었습니다.
  • 마라토집착
    3k
    2021-04-08 15:55:24

    Sql 에 익숙해야  jpa를 잘다루니  

    초보분들은 mybatis 를 학원에서 가르칠듯요


  • 오늘도재미업다.
    177
    2021-04-08 15:58:25

    mybatis

  • ercnam
    6k
    2021-04-08 16:00:09

    사실 mybatis 와 jpa 가 지향하는 DB모델링이 조금 달라서 둘을 그대로 대체해가며 쓰기는 조금 무리가 있다고 ... 저도 여기서 얼핏 들은것 같네요.

  • 해리아범
    45
    2021-04-08 16:17:46

    대체로 서비스 업체들은 jpa쪽을 선호하고 그외는 mybatis 선호하는 편이예요

    Si쪽에서는 뭐 거의 다 mybatis라고 보시면 됩니다

    메모리 디비 쓰는 유닛테스트가 아닌 다음에야 아무리 개발환경이라고 해도 ddl auto로 테이블 날리고 하면 안되죠


    보통 개발회사에서는 ddl 실행권한이 일부에게만 주어지기 때문에 디비로부터 엔티티를 가져올거구요. 다만 테이블 설계 시에 테스트 코드로 검토하고 만들던가 하는건 회사마다 다를 것 같습니다


    디비 테이블 먼저 설계하고 프로그램을 설계하는 건 jpa취지랑은 전혀 반대지요. 제가 본 건 이런 경우만 봐서 ^^ jpa를 잘 쓰는건 정말 네카라쿠배 정도 되어야하나 싶기도 합니다

  • bede
    21
    2021-04-08 16:22:23 작성 2021-04-08 16:23:14 수정됨

    솔루션업체고

    JPA 사용중이에요

  • cvic
    221
    2021-04-08 16:23:47

    회사차이, 팀차이, 취향차이.


    칼럼명조차 관심없고 샘플, 테스트 프로젝트 h2, jpa

    어딘가에 deploy 되야한다? mybatis, jpa 중 선택

    선택기준은 처음부터 n:n이 많거나 탐색이 깊어질거 같고 통계성 요건이 좀 있을 것 같다 싶음 mybatis 그 외에는 jpa로 진행합니다.

    킹치만 jpa로 해도 많아지고 깊어지고 통계도 나와야되느넥 함정 ㅋㅋㅋ

  • 마샤와곰
    209
    2021-04-08 16:33:46

    JPA는 복잡한 쿼리 만들때는 솔직히 가독성도 떨어지고 복잡해서 별로인 것 같더라구요.

    여러 테이블과 다양한 컬럼이 존재하여 쿼리 자체의 규모가 커지면 Mybatis가 나은 것 같고,

    그렇지 않으면 깔끔하고 정리정돈이 잘 되는 JPA인 것 같습니다.

    어디까지나 주관적인 생각 입니다!

  • 파이썬초보..
    682
    2021-04-08 16:40:17

    요새는 JPA를 많이 쓰죠 ㅎㅎ

  • 마샤와곰
    209
    2021-04-08 16:55:48

    저도 개인적으로는 JPA가 좋긴한데 아직 뭔가 완벽하지는 않는 것 같습니다.

    가령 Java에서 몽고DB를 조회한다고 하면,

    몽고db에서 병렬처리같은 함수인 facet은 제대로 지원을 아직 안하더라구요.

    뭐..어쨋든 둘다 장단점이 있는 좋은 프레임워크임에는 틀림 없다고 생각합니다. :)

  • 오늘도공부
    250
    2021-04-08 17:01:39

    1. 구글 트랜드 검색 결과 를 보면 MyBatis와 JPA의 격차가 거의 줄어서 비슷합니다.

    2. JPA를 쓰던 MyBatis를 쓰던 DB를 먼저 모델링 후 코드로 옮기는게 좋다고 생각합니다.

    그리고 JPA를 쓰면서 복잡한 조회 쿼리는 조회 전용 프레임워크(QueryDSL, jooq) 를 쓰거나 MyBatis를 사용해서 해결할 수도 있습니다.

    결론은 해결할 문제에 적합한 것을 선택해서 사용하면 됩니다.

  • 장독깨기
    1k
    2021-04-08 19:08:51 작성 2021-04-08 19:11:31 수정됨

    테이블 조인해서 select 할 경우 mybatis,

    그 외 단순테이블조회,추가,수정,삭제 등은 orm

    이렇게 조합하면 개발하기 편리하긴 합니다.

    그리고, orm 은 JPA 가 너무 별로라서 다른 걸 쓰고 있긴 합니다. ㅋ

  • 왕왕
    797
    2021-04-08 20:57:53

    윗분들 의견상 JPA가 별로라고하는데 고도화하는 곳에서 왜 많이 쓰이는지 저도 궁금하긴해요...

  • 마샤와곰
    209
    2021-04-09 09:19:42

    별로이기라고 하기보다는 각각 성격이 다른 것 같아요~

    다수의 테이블과의 연결이 필요하면서 컬럼에 대한 다양한 작업이 있는 상황이라면 이걸 JPA를 사용하면 기능 만드는 것도 어렵지만 유지보수와 디버깅이 너무 힘듭니다..

    뭔말인지? 이러거든요 정말..

    차라리 이럴 때는 Mybatis가 훨씬 좋지요. 그냥 복사해서 붙여넣으면 바로바로 쿼리가 뭐가 잘못되었는지,

    어떻게 쿼리를 만들어야 하는지 바로바로 답이 나오니까요.

    그런데, 쿼리 자체가 엄청 복잡하지 않는 경우라면 간결하고 깔금하게 JPA로 구현이 가능하니 훨씬 나은 것 같습니다.


  • 마리!
    125
    2021-04-10 01:34:34

    답변들 다들 정말 감사합니다!! 결국엔 DB를 알고 -> 어떻게 활용하는가에 따라 선택한다! 라는 걸까요! 데이터베이스 공부를 더 열심히 해야겠네요.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.