의 MyBatis에 대해 설명

1.mybatis 에서 # {} $ {} 차이점은 무엇입니까?

답변 :

정의 : #는 {} 미리 컴파일된다.

작업 : 의 MyBatis 프로세스 #는 {} , 동안 SQL은 그것을 대체 할 것이다 ? , 그리고 전화 의 PreparedStatement에게 설정 방법 할당을, 또한 방지 할 수 SQL 주입.

참고 : SQL 주입 악성 실행할 수있는 인젝션 공격이다 의 SQL 문은. 하여 SQL 데이터베이스 쿼리 코드로, 그래서 공격자가 제어 할 수있는 서버 응용 프로그램 뒤에 데이터베이스 서비스를 , 그것은 데이터베이스 작업의 숫자가 될 수 있습니다. 데이터베이스에 데이터를 추가, 수정 및 삭제 등.

정의 : $ {} 문자열 대체.

작업 : 의 MyBatis 프로세스 $ {} , 동안 SQL은 변수의 값으로 대체됩니다.

2.mybatis 여러 가지 방법의 페이지 매김이있다?

: 이 있습니다 네, 즉, 페이징의 배열 SQL의 페이징, 페이징 인터셉터 에 RowBounds의 페이지입니다.

3.mybatis의 페이징의 물리적 및 논리적 페이지 사이의 차이점은 무엇입니까?

답변 :

정의 : 물리적 페이지가 같은 개체가 데이터베이스 즉, 물리적 실체에 의존 MySQL의 데이터베이스가 제공하는 제한 프로그래머에 대해 쓰고, 키워드를 제한하는 쿼리 키워드를 데이터베이스가 페이지 된 결과를 반환합니다.

정의 : 논리 페이지는 프로그래머가 작성한 코드가 아닌 페이지 된 데이터베이스에 의해 반환 된 결과지만, 모든 데이터 및 코드 프로그래머에 의해 인수 페이지 된 데이터입니다. 일반 일회용 조회 작업은 모든 데이터 저장하는 리스트 세트 및 데이터 인덱스에 의해 지정된 범위 취득

 

둘 사이의 비교 :

  1. 데이터베이스의 부담 : 모든 물리적 페이지의 쿼리 및 논리적 페이지가 한 번만 데이터베이스를 쿼리하기 때문에 데이터베이스에 더 큰 부담이 물리적 페이지에 의해 발생하므로, 데이터베이스에 액세스 할 수 있습니다.
  2. 서버 부하 : 논리적 페이지는 한 시간이 물리적 페이지는, 적은 메모리 공간을 차지 방문당 데이터베이스 데이터의 일부만을 읽을 더 큰 메모리 공간을 차지, 메모리에 데이터를 읽을 수있는 서버의 논리적 페이지 큰 부담 때문에 .
  3. 실시간 : 논리 페이지의 데이터는 데이터 변경, 데이터베이스 작업의 최신 상태를 실시간 차이에 실시간으로 반영되지 않습니다 한 시간에 메모리로 읽어되어 접근 할 필요가에게 데이터베이스를 물리적 페이지에 데이터를 필요로 할 때마다 데이터가 변경, 데이터베이스의 최신 상태를 실시간 작동하므로 실시간 성능을 반영합니다.
  4. 응용 프로그램 : 작은 데이터 양 및 데이터가 안정적 경우에 대한 논리 페이지는 물리적 페이지에 적용 할 수있는 데이터의 양이 자주 경우 업데이트됩니다.

 

참고 : MyBatis로 에 RowBounds의 탭이 논리적 다음 페이지를 사용하여 오프셋 제한 컷 탭 기록을하고 그 결과를 반환합니다. 그러나 많은 양의 데이터 메모리 오버 플로우가 발생합니다.

 

4. 설명 MyBatis로 캐시 및 보조 캐시를?

A : 캐시 :이를 기반으로 PerpetualCache / [pə petʃuəl] [kæʃ] 해시 맵 로컬 기억 장치, 그 범위에 저장된 세션 . 세션 플러시 또는 가까운 이 후 세션의 모든 캐시가 삭제됩니다. 레벨 캐시는 기본적으로 설정되어 있습니다.

캐시 및 캐시 메커니즘 기반 PerpetualCache에게 HashMap의 범위가 저장된 상이한 로컬 저장 매퍼 ( 네임 스페이스 ) 및 맞춤 기억 소스 될 수있다. 차 캐시는 두 번째 레벨 캐시를 열려면, 기본적으로 열리지 않습니다 달성하기 위해 두 개의 캐시 속성 클래스가 필요 직렬화 / [ sɪərɪəlaɪzəbl] 시리얼 인터페이스를.

 

기본 캐시 범위의 추가 및 삭제가 모든 쿼리는 범위에서 삭제됩니다 경우 : 데이터를 캐시에 대한 업데이트 메커니즘하십시오.

온 5. 최대 절전 모드 MyBatis로 차이?

답변 : Hibernate가 인기입니다 ORM ( 객체 관계형 매핑) 프레임 워크,보다 완벽한 패키지의 데이터베이스 구조.

MyBatis로 도 인기 의 ORM 프레임 워크는 주요 초점은 POJO SQL 사이의 매핑입니다. POJO의 간단한 임의의 대표 자바 순수의 전통적인 의미의 객체, 자바 , 가장 기본적인 객체 자바 빈 의 속성에 의해 전용 속성 의 get 설정 방법은 변형 될 수있다 포, DTO, VO를.

1은 둘 사이의 가장 큰 차이 : 간단한 쿼리, 절전 모드 MyBatis로는 대응 한 코드 발생기는 실질적으로 생성 할 수 DAO 레벨 코드.

针对高级查询:mybatis需要手动去写SQL语句,以及ResultMap;而hibernate有良好的映射机制,开发者不需要关心sql生成和映射结果,可以更加关注业务流程。

2.开发难度对比:hibernate的开发难度大于mybatis,因为hibernate比较庞大复杂,而且学习周期比较长。而mybatis就比较简单,且它比较依赖于sql的书写,可以让开发者更加熟悉。

举一个形象的比喻:

Mybatis:机械工具,使用方便,拿来就用,但是工作还是要自己来做,不过工具是活的,怎么用由自己决定。

Hibernate:智能机器人,但研发(学习,熟练度)它的成本高,工作都可以交给它,但仅限于它能作的事。

 

6.Mybatis分页插件的实现原理是什么?

答:分页插件的基本原理是使用mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方法,添加相应的物理分页语句和物理分页参数。

추천

출처www.cnblogs.com/su-chu-zhi-151/p/11874457.html