나는 전에 Mybatis를 많이 사용하지 않았으며, 그것이 Hibernate와 같은 ORM 데이터베이스 프레임 워크라는 것을 알고 있습니다. 사용 능력이 증가함에 따라 최대 절전 모드와 매우 다르다는 것을 알았습니다. 관심있는 친구들은이 기사를 통해 배울 수 있습니다.
이번 주말을 이용하여 일반적으로 사용되는 기술을 정리하는 데 시간이 걸렸으며 편집자는 때때로 컨텐츠를 업데이트합니다.
먼저 두 가지 개념을 간단히 소개하겠습니다.
Hibernate : Hibernate는 현재 가장 인기있는 ORM 프레임 워크이며 데이터베이스 구조의 비교적 완전한 캡슐화를 제공합니다.
Mybatis : Mybatis는 또한 매우 인기있는 ORM 프레임 워크이며 Pojo와 SQL의 매핑 관계에 중점을 둡니다.
둘째, 여러 측면에서 두 가지의 차이점에 대해 이야기 해 봅시다.
1. 둘 사이의 가장 큰 차이점 :
간단한 논리의 경우 최대 절전 모드 및 mybatis에는 간단하고 기본적인 DAO 계층 방법을 생성 할 수있는 해당 코드 생성 도구가 있습니다.
고급 쿼리의 경우 MyBatis에는 SQL 문 및 결과 맵의 수동 쓰기가 필요합니다. Hibernate는 좋은 매핑 메커니즘을 가지고 있으므로 개발자는 SQL 생성 및 결과 매핑에 신경을 줄 필요가 없으며 비즈니스 프로세스에 더 집중할 수 있습니다.
2. 개발 난이도 비교
최대 절전 모드 개발은 mybatis보다 더 어렵습니다. 주로 최대 절전 모드는 복잡하고 크고 학습주기가 길기 때문입니다.
Mybatis는 비교적 간단하며 Mybatis는 주로 SQL 작문에 의존하여 개발자가 더 친숙하다고 느끼게합니다.
3. SQL 쓰기 비교
Mybatis의 SQL은 수동으로 작성되므로 필요에 따라 쿼리 필드를 지정할 수 있습니다. 그러나 자신의 로그 통계가 없으므로 로그 4J를 사용하여 로그를 기록해야합니다.
최대 절전 모드는 또한 쿼리 해야하는 필드를 지정하기 위해 SQL 자체를 작성할 수 있지만, 이는 최대 절전 모드 개발의 단순성을 파괴합니다. 그러나 최대 절전 모드에는 자체 로그 통계가 있습니다.
4. 데이터베이스 확장 성 비교
모든 SQL은 데이터베이스에 작성되었으므로 MyBatis는 확장 성과 마이그레이션이 좋지 않습니다.
최대 절전 모드와 데이터베이스 간의 특정 관계는 XML이므로 HQL은 어떤 데이터베이스를 사용하는지에 대해 크게 걱정하지 않습니다.
5. 캐싱 메커니즘의 비교
유사성 : 시스템의 기본 캐싱 메커니즘을 사용하는 것 외에도 최대 절전 모드 및 Mybatis의 두 번째 레벨 캐시는 자신의 캐시를 구현하거나 다른 타사 캐시 솔루션에 대한 어댑터를 만들어 캐시 동작을 완전히 덮어 쓸 수 있습니다.
차이점 : Hibernate의 보조 캐시 구성은 SessionFactory에서 생성 된 구성 파일에 자세히 구성되며 캐시가 구성된 특정 테이블-객체 맵에서 구성됩니다.
MyBatis의 보조 캐시 구성은 각 특정 테이블-객체 맵에서 자세히 구성되므로 다른 테이블에 대해 다른 캐시 메커니즘을 사용자 정의 할 수 있습니다. MyBatis는 네임 스페이스에서 동일한 캐시 구성 및 인스턴스를 공유 할 수 있으며, 이는 Cache-Ref를 통해 구현됩니다.
두 가지 비교 : Hibernate에는 쿼리 객체에 대한 좋은 관리 메커니즘이 있기 때문에 사용자는 SQL에 신경 쓰지 않아도됩니다. 따라서 보조 캐시를 사용할 때 더러운 데이터가 나타나면 시스템이 오류 및 프롬프트를보고합니다.
이와 관련하여 MyBatis는 L2 캐시를 사용할 때 특별한주의가 필요합니다. 데이터 업데이트 작업 범위를 완전히 결정할 수없는 경우 캐시의 맹목적인 사용을 피하십시오. 그렇지 않으면 더러운 데이터의 모양은 시스템의 정상적인 작동에 큰 숨겨진 위험을 초래할 것입니다.
6. 요약 :
mybatis : 작고 편리하고 효율적이며 단순하고 직접, 반자동
최대 절전 모드 : 강력하고 편리하고 효율적이며 복잡하며 완전 자동
Hibernate 및 Mybatis는 SessionFactoryBuider를 통해 XML 구성 파일에서 SessionFactory를 생성 한 다음 SessionFactory에서 세션을 생성 한 다음 마지막으로 트랜잭션 및 SQL 문을 실행할 수 있습니다.
MyBatis의 장점은 MyBatis가보다 자세한 SQL 최적화를 수행하고 쿼리 필드를 줄이며 마스터하기 쉽다는 것입니다.
최대 절전 모드의 장점은 DAO 층 개발이 Mybatis보다 간단하여 SQL의 유지 및 결과 매핑이 필요하다는 것입니다. 데이터베이스 이식성은 매우 좋으며 MyBatis 데이터베이스 휴대 성이 좋지 않으며 다른 데이터베이스가 다른 SQL을 작성해야합니다. 더 나은 레벨 2 캐싱 메커니즘이 있으며 타사 캐싱을 사용할 수 있습니다. Mybatis 자체는 열악한 캐싱 메커니즘을 제공합니다.
mybatis :
1. 시작, 학습 및 사용이 간단하며 데이터베이스 쿼리에 자동 객체 바인딩 기능을 제공하며 SQL 사용에 대한 좋은 경험을 계속합니다. 객체 모델 요구 사항이 높은 프로젝트에 매우 적합합니다.
2.보다 자세한 SQL 최적화를 수행 할 수있어 쿼리 필드를 줄일 수 있습니다.
3. 단점은 프레임 워크가 여전히 비교적 간단하고 기능이 여전히 누락된다는 것입니다. 데이터 바인딩 코드가 단순화되지만 전체 기본 데이터베이스 쿼리는 실제로 직접 작성해야하며 워크로드는 비교적 커서 빠른 데이터베이스 수정에 쉽게 적응하기가 쉽지 않습니다.
4. 2 차 캐싱 메커니즘은 열악하다.
최대 절전 모드 :
1. 강력한 기능, 우수한 데이터베이스 관련성 및 강력한 O/R 매핑 기능. 최대 절전 모드에 능숙하고 최대 절전 모드를 적절하게 캡슐화 한 경우 프로젝트의 전체 지속성 계층 코드는 매우 간단하고 작성해야 할 코드가 거의 없으며 개발 속도가 매우 빠르며 매우 시원합니다.
2. 더 나은 보조 캐싱 메커니즘이 있으며 타사 캐싱을 사용할 수 있습니다.
3. 단점은 학습 임계 값이 낮지 않으며 능숙해야한다는 것입니다. O/R 매핑을 설계하는 방법, 성능 및 객체 모델의 균형을 맞추는 방법 및 최대 절전 모드를 잘 사용하는 방법은 경험과 능력이 강해야합니다.
생생한 은유를 드리겠습니다.
MYBATIS : 기계 도구는 사용하기 쉽고 가능한 빨리 사용할 수 있지만 작업은 여전히 직접 수행해야하지만 도구는 살아 있어야하므로 저에게 달려 있습니다.
최대 절전 모드 : 지능형 로봇이지만 (학습, 숙련도) 개발하는 데 비용이 많이 들고 작업을 제거 할 수는 있지만 수행 할 수있는 작업 만 제거 할 수 있습니다.