답변:
달성하려는 것을 고려하십시오. 일반적으로 명령 쿼리 응답 분리 모델은 복잡한 도메인에 적합합니다.
그 이유는 일반적으로 다음 두 가지 중 하나를 수행하려고하기 때문입니다.
최대 절전 모드 는 사례 1에서 잘 작동하므로 POJO를 작성하고 지속 / 업데이트 할 수 있습니다. 도메인이 상당히 크지 않은 경우에도이를 신속하게 수행합니다.
myBatis 는 응답을 원하는 페치 쿼리 (케이스 2)에 적합합니다. Hibernate는 전체 객체 그래프를로드하려고 시도하고 대형 도메인에서 작동하도록 LazyLoading 트릭으로 쿼리 튜닝을 시작해야합니다. 엔터티 개체를 반환하지 않는 복잡한 분석 쿼리를 실행할 때 중요합니다. 이 경우 Hibernate는 BigDecimal과 같은 거대한 기본 유형을 가진 SqlQuery와 bean Transformers만을 제공하는 반면 myBatis는 간단한 POJO 비 엔티티에 쉽게 맵핑 할 수 있습니다.
이 두 경우는 도메인 데이터를 변경하려는 명령 과 일부 데이터를 가져 오려는 응답 의 차이점 입니다.
따라서이 두 가지 경우와 응용 프로그램의 기능을 고려하십시오. 도메인이 단순하고 정보를 가져 오는 경우 myBatis를 사용하십시오. 복잡한 도메인이 있고 엔터티를 유지하는 경우 최대 절전 모드를 사용하십시오. 둘 다 수행하는 경우 하이브리드 방식을 고려하십시오. 그것이 우리가 프로젝트에서 사용하는 것입니다. ;)
MyBatis는 SQL 중심입니다. SQL 문을 호출하고 결과 (테이블)를 객체 트리에 매핑하는 데 도움이됩니다.
주요 이점은 ORM이 아니라는 것입니다. 테이블을 객체에 매핑하지 않으므로 orm 임피던스 불일치가 발생하지 않습니다. 복잡하거나 레거시 데이터베이스에 적합하거나 저장 프로 시저, 뷰 등과 같은 DB 기능을 사용하는 데 적합합니다.
매우 간단하고 배우기 쉬우므로 숙련 된 팀에도 적합합니다. 그들 중에는 최대 절전 모드 전문가가 필요하지 않기 때문입니다.
jpetstore 6 http://mybatis.org/spring/sample.html을 살펴보십시오 .
때문에 질문은 의미 에 내 댓글 , 여기에 내가 쓰고 생각했던거야.
우선, 원래 질문의 맥락에서 파생됩니다. 다른 상황에서는 다른 조언을 해줄 수 있습니다. MyBatis를 제안한 요점은 다음과 같습니다.
... 일부 성능 문제가 발생했습니다.
우리는 데이터베이스 성능을 얻기 위해 일반 Jdbc를 선호하여 최대 절전 모드를 중단하기로 결정했습니다 ...
과거 프로젝트 중 하나에서, 우리 팀은 설명과 같은 이유로 최대 절전 모드에서 전환하는 것을 고려했습니다. 당신과 마찬가지로, 우리는 JDBC로 전환하려고했지만 다른 프로젝트의 동료들은 MyBatis를 추천했습니다. 팀은 문제가 발생하는 경우 JDBC를 대체 옵션으로 유지하면서 시도해보기로 결정했습니다.
그 순간, 나는 MyBatis에 대해 전혀 알지 못했지만 JDBC에 대한 경험이 충분하여 제대로 작동 할 것입니다. 그럼에도 불구하고, 나는 MyBatis를 시도한다는 아이디어를 강력하게지지 해 왔는데, 그 이유는 내 과거 경험에 따라 JDBC로 작성해야 할 보일러 플레이트 코드의 양이 어려울 수 있기 때문입니다.
어쨌든, 우리는 MyBatis를 시험해 보았고 광고 된대로 작동했습니다. 그래서 내가 당신이 묻는 의견을 썼습니다.
기술에 대한 자세한 개요를 제공하거나 어떻게 든 우수성을 칭찬하는 경우-죄송합니다. 가능하다면-짧은 의견을 제시하는 대신 원래 질문에 대한 별도의 답변으로 이미 작성했습니다. 나는 그때 MyBatis에 대해 아무것도 모른다고 언급했습니다. 글쎄요, 여전히 미안합니다. Hibernate로부터의 전환은 다른 팀원들에 의해 이루어졌으며 내가 작업했던 코드에는 영향을 미치지 않았다. 나는 1) MyBatis가 Hibernate와 관련된 문제를 해결했다 .2) 자체 문제를 일으키지 않았다. JDBC로 전환하면 예상됩니다. 그게 다야.
최대 절전 모드는 너무 많은 마법 , 예기치 않은 동작 및 큰 학습 곡선 으로 잘 알려져 있습니다 . 단순성에 더 중점을두고 통제 할 수있는 다른 프레임 워크가 있습니다.
myBatis는 그중 하나이고, 내 프로젝트 MentaBean 은 또 하나입니다. 도움이 될만한 블로그 게시물을 작성했습니다 .
5 년 전에 Hibernate 3을 사용하여 데이터로드 및 데이터 변환 프로젝트에 Hibernate를 사용했는데 정말 훌륭하다고 생각했습니다. 나는 작은 전자 상거래 응용 프로그램을하고 있으며 Hibernate 4를 사용해 보았고 매우 실망했습니다. 그들은 도구를 제거하고 IDE에 긴밀하게 통합되었습니다. 나는 MyBatis를 시험해 보았고 밤새도록 일하는 모든 것을 갔고 응용 프로그램에 얼마나 쉽게 통합 할 수 있는지 매우 기쁘게 생각합니다. 나는 Hibernate가 너무 부풀어 오른 것으로 생각 하고이 시점에서 Hibernate보다 EJB 3을 사용할 것이다.