由于java视频里以前好多都是SSH。但是在实际工作中没见过用hibernate的,基本都用mybatis。
我有一些疑问:
hibernate碰到什么样的业务会变成致命的弱点,都说hibernate效率低,能否举个例子(例如同一个查询用mybatis查询耗时1秒,用hibernate查询耗时10秒)
可能是有部分人遇到了hibernate的瓶颈,但是这部分人的业务量我觉得,不是大部分使用hibernate的人都能遇到的。一般的小项目,不超过100个用户,这样的项目综合考虑的话更适合用mybatis还是hibernate?主要从开发效率上来说的话。为什么?
天蓬老师2017-04-18 09:34:16
다음을 시도해 보세요: http://www.oschina.net/p/monalisa-core: Eclipse 플러그인과 함께 사용하는 것이 더 편리합니다:
DTO 자동 생성 지원
SQL 쿼리는 Mybatis처럼 DTO를 작성한 다음 여러 필드 매핑을 구성할 필요가 없습니다. 플러그인이 모든 작업을 자동으로 수행합니다.
참조 문서: 동적 SQL 코드를 기반으로 DTO를 자동으로 생성하는 방법
여러 줄 문자열 구문
Java 코드로 여러 줄 문자열을 작성하는 것이 매우 쉬워졌습니다.
DataTable 작업
DataTable은 편리한 필드 선택, 필터링, 집계, 그룹화, JOIN 등을 통해 데이터베이스 테이블을 쿼리하는 데 사용할 수 있습니다.
大家讲道理2017-04-18 09:34:16
hibernate
은 단일 테이블의 추가, 삭제, 수정에 적합하며 개발 효율성이 매우 높지만, 사업이 확장되거나 원래의 db
디자인이 좋지 않으면 테이블에 참여해야 합니다. 쿼리 (hibernate의 개념은 테이블을 분류하는 것이지만 실제로는 프로젝트 초기에 완전한 일반화를 달성하기가 쉽지 않기 때문입니다) 결과가 다르고 삭제 및 일치가 있으면 효율성이 떨어집니다 (sql을 작성하지 않는 한, 하지만 이런 식으로 처음에는 mybatis를 사용하는 것이 좋습니다), 특히 많은 양의 데이터를 접할 때 효율성이 기하급수적으로 떨어집니다.
사용자가 100명 이하인가요? , 여기서의 크기 순서는 단일 테이블을 기준으로 계산되지 않습니다. 단일 테이블이 일정량의 데이터를 초과하는 경우 단순히 hibernate
또는 mybatis
을 사용하여 해결할 수는 없습니다. mybatis
을 사용하면 변경됩니다. 내 경험에 따르면 조인 테이블 쿼리가 많고 비즈니스가 복잡한 경우(대개 프로젝트가 끝날 때까지) mybatis
를 사용하는 것이 hibernate
보다 빠릅니다. (开发效率
)
伊谢尔伦2017-04-18 09:34:16
hibernate의 학습 비용은 상대적으로 높지만, j2ee에는 JPA 사양이 있어서 사양을 학습해도 괜찮습니다. Mybatis는 비교적 간단하고 사용하기 쉽고 제어가 가능합니다. Hibernate는 학습 비용이 높고 지나치게 객체 지향적이며 조정이 어렵습니다. 사용법은 개인에 따라 다르겠지만, toB나 toC 어플리케이션은 mybatis를 선호하지만, 관리 백엔드의 경우 hibernate가 좋습니다
天蓬老师2017-04-18 09:34:16
초대해주셔서 감사합니다! 다음 답변은 모두 매우 좋습니다. 첫째, MyBatis는 배우기 쉽습니다. 둘째, SQL을 직접 작성하여 유연하고 쉽게 제어할 수 있습니다. 성능에 관해서는 개발 효율성과 유지 관리성이 훨씬 더 중요합니다. .
ringa_lee2017-04-18 09:34:16
Hiberbate는 Java 개체를 사용하여 SQL을 작성하는 반면 mybatis는 기본 SQL을 직접 작성합니다. 전자는 한동안 개발하고 화장터를 유지 관리(수정)하는 것이 재미있지만, 후자는 (전자에 비해) SQL에 대한 어느 정도의 이해가 필요합니다. 회사에 DBA가 있으면 네이티브를 읽는 것이 훨씬 더 직관적입니다. Java 코드보다 SQL. 성능에 관해서는 대부분의 경우 고려할 필요가 없습니다(정말로 고려하고 싶다면 최근 몇 년간 몇몇 사람들이 논의한 "ORM 제거"를 검색해 보면 됩니다). 가장 중요한 것은 유지 관리성입니다.
伊谢尔伦2017-04-18 09:34:16
hibernate와 mybatis는 모두 JDBC를 캡슐화한 것일 뿐입니다. 프로그램 성능이 좋은지 여부는 주로 SQL이 잘 작성되었는지, DB 설계가 합리적인지에 따라 결정됩니다. 물론, hibernate의 많은 SQL은 프로그래밍 방식으로 구현됩니다. 두 프레임워크는 모두 매우 능숙하며 사용 시 성능에 큰 차이가 없어야 합니다. 그러면 문제가 발생합니다. Hibernate는 너무 캡슐화되어 있으며 실제로 Mybatis는 단순한 jdbc 캡슐화에 불과합니다. 또한, hibernate는 많은 시나리오에서 사용되며, SQL이 캡슐화되어 있기 때문에 특별히 능숙하지 않은 경우에는 Mybatis가 더 간단하고 많은 일을 하지 않는 경우가 있습니다. 프로그램의 결과는 일반적으로 문제 발생을 예측하기가 더 쉽습니다.
두 프레임워크 모두 실제로 매우 잘 설계되었지만 개인적인 사용 습관이 더 중요합니다. mybatis에 익숙한 사람들은 일반적으로 최대 절전 모드로 전환하는 것이 어려울 것입니다. mybatis (개인적인 겸손한 의견)를 의도적으로 사용하십시오.
伊谢尔伦2017-04-18 09:34:16
실제 업무에서 마이바티스를 사용하는 것은 기본적으로 성능이나 사용성을 고려하지 않고 개인의 습관을 바탕으로 합니다.
우리 같은 노련한 프로그래머들은 SQL 작성에 익숙하기 때문에 작성하지 않으면 불편함을 느낄 것입니다. 대조적으로, 너무 자동화된 최대 절전 모드는 우리를 당황하게 만들 수 있습니다.
그게 다입니다.
黄舟2017-04-18 09:34:16
학습 단계에서 사용해 본 개인적인 느낌으로는 최대 절전 모드가 너무 캡슐화되어 있다는 것입니다. 많은 경우 편의성을 가져오지 않는 것처럼 느껴지지만 이 프레임워크와 "조정"하려면 겉으로는 불필요해 보이는 작업을 수행해야 한다고 생각합니다.
伊谢尔伦2017-04-18 09:34:16
사업 규모가 상대적으로 작은 경우 어느 분야에 더 능숙한지에 따라 다릅니다. 괜찮을 거예요. 이것에 대해 걱정할 필요가 없습니다. Mybatis는 더욱 유연하여 개발자에게 자체 구현에 더 많은 공간을 제공합니다. 최대 절전 모드 연결로 인해 약간 느려집니다.