어그로 x
말 그대로 궁금증임
JPA + QueryDSL는 겉햝기로만 써보고, MyBatis를 주로 씀...
차장님한테 물어보니 차장님이 "Cascade 등 속도가 너무 느려서 MyBatis로 리팩토링한 경험이 있다." 고 하셔서...
근데 써보면서 복잡한 쿼리를 Repository 계층에 QueryDSL로 JPQL을 작성하나, XML에 쿼리를 짜나 같은 작업인 것 같고...
내가 아직 경험도 지식도 부족해서 특출난 장점을 잘 모르겠음... 제대로 쓰는건지도 의문이 계속 들고...
Java 코드만 작성해도 되고 메소드 체이닝으로 작성하니 생산성이 GOAT라서 쓰는건가..?
아 맞다 DB 종속이랑 유지보수성이 있지 죄송합니다.. 혼자 북치고 장구쳤네
join에 의존하는 코드는 유지보수가 어렵지만 성능이 좋지 그런데 큰 규모로 봤을때는 join보다는 데이터 모델링을 최적화 시켜서 성능 개선 하는게 더 나음 성능은 개선시킬 수 있지만 대규모에서 구조 꼬이면 답이 없거든
물론 대규모에서도 케바케로 join이 유리한 경우도 있음
감사합니다 ㅠㅠㅠ
식견이 많이 늘었습니다..
개인적인 생각) 쌩쿼리 쓰는건 유지보수하기가 힘들다고봄. 유지보수하기 힘들다는건 다시 말하면 사람이 실수하기도 좋은 환경인거고. 요즘엔 특히 rdb에는 가장 정확한 원천 데이터만 저장하고 그 이후에 검색이나 조회는 es나 nosql로 떔빵치는 경우가 많은데, 이러면 rdb에 쿼리 날릴 일이 대개 간단한 CRUD뿐임. 단순 crud라면 jpa가 생산성, 유지보수 압도적으로 좋고 성능 이슈도 크게 발생할 일도 없고 실수할 일도 적고 jpa 단점으론 말한대로 성능이나 2차캐시로 인한 문제들이 있을텐데 요즘처럼 메시지큐 도배하는 시대엔 핀테크가 아니고서야 큰 문제 없다고봄.
그럼에도 rdb에 어느정도 복잡한 쿼리는 발생할테니 이런 부분은 querydsl로 채우는거고.. 쌩쿼리 쓰려면 회사에 전문 DBA가 있다 + 쿼리가 자바에서 표현하기엔 매우 복잡하다 두가지 조건일 때만 쓰는듯. 후자의 조건은 말한대로 es, nosql로 어느정도 많이 줄은듯 여차하면 걍 rdb에 반정규화 추가해도 되고.. 암튼 요약하면 쿼리를 복잡하게 가져갈 일이 없도록 만드는게 제일 좋지 않을까?라는 생각이고, 이 논리로 가면 jpa랑 querydsl로도 충분하다고 생각함. 물론 처한 상황이나 레거시에 따라서 mybatis가 좋은 경우도 있을거고
다 쓰고 읽어보니 너무 횡설수설했네 걍 적당히 듣고 흘리삼
어떤 내용인지 단박에 이해가 됐습니다!!! 사실 상황에 따라 기술을 적용하는게 제일 정확하기도 하고, 복잡함의 정도는 위 작성해주신 상황(구조)이라면 확연하게 줄어들겠네요! 감사합니다!
자바에서 디비를 컬렉션(리스트)처럼 다루게 도와주는게 jpa임. 그냥 써보면 훨씬 편함 배우는데 시간이 들어서 그렇지. 첫댓처럼 종속성 때문도 있음.