머리말
Javaweb 개발에서 가장 고전적인 개발은 SSH 프레임 워크 조합 및 SSM 프레임 워크 조합입니다. 이제 많은 IT 회사가 SSM을 기꺼이 사용하고 있습니다. H와 M에서 Hibernate와 Mybatis는 오늘 그것에 대해 간단히 이야기하겠습니다.
문에서 도끼를 재생합니다
수업 중에는 종종 학생들에게 모든 기술을 이해해야한다고 말합니다.
지식 설명
Hibernate와 Mybatis는 매우 인기있는 ORM (객체 관계 매핑, 데이터베이스에 맵핑하는 기술) 지속성 계층 프레임 워크입니다. 본질적으로, 우리의 사용을 촉진하고 개발을 단순화하기 위해 여전히 JDBC가 캡슐화되어 있습니다. 먼저 몇 가지 문제를 알아 봅시다.
지속성 층의 도입 이이 문제를 해결할 수있는 이유는 무엇입니까? 분석 : 메커니즘은 지속성 층에 도입 될 수 있으며, 이는 번역으로 사용될 수 있습니다. 하단의 다른 데이터베이스의 경우 HQL 문 및 동적 쿼리 문이 다른 SQL 문으로 변환됩니다. 이는 데이터베이스를 교체 한 후 SQL 문을 변경할 필요가 없다는 문제를 해결하며 코드의 양이 크게 줄어 듭니다.
Hibernate와 Mybatis는 어떻게 위의 솔루션을 구현했는지, 즉 어떻게 ORM을 구현 했습니까?
최대 절전 모드
Hibernate 에서이 메커니즘은 구성 파일 Hibernate.cfg.xml (SRC 디렉토리에 배치)입니다.
<hibernate-configuration> <session-factory> <property name = "connection.url"> jdbc : mysql : // localhost/hibernate </property name = "connection.username"> root </property> <property name = "connection.password"> saber </property> <property name = "connection.driver"> mysfword.mysword "> mysfword"> saber </property> <property name = "connection. <property name = "dialect"> org.hibernate.dialect.mysqldialect </property> <!-ddl 문은 테이블을 자동으로 생성합니다-> <property name = "hbm2ddl.auto"> none </property> <property name = "show_sql"> true </production> <속성 이름 = "forcont_sql"> connection </property plot_sql ". 이름 = "hibernate.connection.provider_class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionprovider </property> <!- 연결 풀의 JDBC 연결 최소 수. 최대 절전 모드 기본값은 1-> <속성 이름 = "hibernate.c3p0.min_size"> 5 </property> <!-연결 풀의 JDBC 연결 최대 수입니다. 최대 절전 모드 기본값은 100-> <속성 이름 = "hibernate.c3p0.max_size"> 20 </property> <!-연결 풀에서 초 유휴 연결을 제거 할 때. 기본값은 0이며 절대 만료되지 않습니다-> <속성 이름 = "hibernate.c3p0.timeout"> 300 </property> <!-캐시 된 사전 컴파일 된 문의 수입니다. 성능을 향상시키는 데 사용됩니다. 최대 절전 모드 기본값은 0으로 0으로 사용할 수 없습니다-> <속성 이름 = "hibernate.c3p0.max_statements"> 100 </property> <!-연결이 자동으로 확인되기 전에 유휴 시간 (초 유휴 시간). Hibernate 기본값은 0-> <속성 이름 = "hibernate.c3p0.idle_test_period"> 3000 </property> <!-독립적으로 실행됩니다. getCurrentSess ()을 통해 세션을 받으면 다음과 같이 설정해야합니다 .-> <속성 이름 = "current_session_context_class"> 스레드 </property> <!-영구 클래스를 매핑하는 두 가지 방법-> <mapping/<맵핑 리소스 = "com/serup/model/el
프로젝트가 데이터베이스를 변경하면 수정해야 할 것은이 파일의 여러 속성 일 뿐이며 비즈니스 계층의 논리 코드를 수정할 필요가 없습니다.
개발을 위해 최대 절전 모드 사용이 권장됩니다.
** Domain Object ---> 매핑 ---> 데이터베이스 즉, 객체와 테이블에는 매핑이 필요 하며이 매핑은 Hibernate **에 두 가지 구성 메소드가 있습니다.
1. XML 메소드 (클래스 이름 .hbm.xml)
HBM 파일을 통해 테이블과 클래스 간의 매핑 관계 설정
2. 주석 방법
나중에 리버스 엔지니어링을 사용하면 훨씬 간단 해져서 데이터베이스 테이블을 통해 해당 파일을 직접 생성 할 수 있습니다.
mybatis
MyBatis 에서이 메커니즘은 구성 파일 MyBatis-config.xml (SRC 디렉토리에 배치)에도 의존합니다.
<configuration> <properties resource = "sqlserverinfo.properties"/> <!-데이터베이스의 구성 파일-> <tondealiases> <package name = "com.demo.domain"/> <!-파일을 별도로 스캔하기 위해 유형별로 패키지 스캔-> </reflatealiases = "<환경"> <개발 "> <개발"> 유형 = "jdbc"/> <dataSource type = "pooled"> <property name = "driver"value = "$ {driver}"/> <속성 이름 = "url"value = "$ {url}"/> <property name = "username"value = "$ {username}"/> <property name = "password"{password} "/> </datasure> </환경> <mappers> <!-특정 CRUD 작업을 완료하기 위해 파일 매핑-> <Mapper Resource = "Com/Demo/Domain/usermapper.xml"/> </mappers> </configuration> 이러한 방식으로 데이터베이스를 변경할 때마다 구성 파일 만 수정하면됩니다.
개발에 mybatis를 사용하는 것이 좋습니다.
** 데이터베이스를 작성하고 다양한 테이블을 만듭니다 ---> 리버스 엔지니어링은 MyBatis 실행에 필요한 코드를 자동으로 생성합니다 (Mapper.java, Mapper.xml, Po ..) ---> 비즈니스 로직에 따라 제어 계층 및 서비스 계층을 작성하십시오. **
차이
인터넷에는 다양한 비교가 있으며, 나는 생각하는 몇 가지 요점에 대해서만 이야기합니다.
1. Hibernate에는 HQL이라는 객체 지향 쿼리 언어가 있습니다. 이것은 매우 강력합니다. SQL 문이 데이터베이스를 추가, 삭제, 수정 및 검색 할 수있는 APE를 허용하지만 이는 또한 약점입니다. SQL 문을 최적화 할 수 없습니다.
2. MyBatis에는 SQL 문 구성이 필요합니다. 즉, 데이터베이스에 대한 기본 지식이 여전히 시작되어야합니다. 또한 초보자는 결과 매핑에서 많은 함정을 만났을 것입니다.
3. 나는 특히 큰 프로젝트를 한 적이 없습니다. 특별한 성능 요구 사항이없는 경우 최대 절전 모드는 여전히 기능을 구현하기가 더 쉽습니다.
시스템 튜닝
최대 절전 모드의 튜닝 솔루션
mybatis 튜닝 솔루션
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.