다년간의 개발 경험을 바탕으로 정리한 Java 인터뷰 질문 - (7)

王林
풀어 주다: 2020-08-20 16:37:04
앞으로
2153명이 탐색했습니다.

다년간의 개발 경험을 바탕으로 정리한 Java 인터뷰 질문 - (7)

1. Hibernate 비관적 잠금

(자세한 인터뷰 질문 권장 사항: java 인터뷰 질문 및 답변)

Hibernate 비관적 잠금: 잠금이 해제될 때까지 데이터를 잠급니다. 다른 사용자가 수정할 수 있습니다. 장점: 데이터의 일관성이 매우 잘 유지됩니다. 단점: 여러 사용자가 동시에 액세스하는 데 적합하지 않습니다. 잠긴 리소스가 해제되지 않으면 다른 사용자가 해당 리소스를 수정하지 않으므로 무기한 대기가 발생하기 쉽습니다.

Hibernate 낙관적 잠금: 데이터가 수정되면 데이터가 잠금을 달성하기 위해 일관성이 있는지 확인하기 위해 데이터를 버전 또는 타임스탬프와 비교합니다. 장점은 비교적 좋은 편입니다.

2. 세 가지 상태를 최대 절전 모드로 전환합니다.

임시 상태: 새 객체가 아직 지속되지 않았고 세션에 없습니다.

지속 상태: 지속되었으며 세션 캐시에 추가되었습니다. 영구 객체;

자유 상태: 영구 객체가 세션 객체와 분리되어 있습니다. 세션 캐시가 지워진 개체 등입니다. 기능: 이미 지속되었지만 세션 캐시에는 없습니다. 이 상태의 개체를 무료 개체라고 합니다.

(권장 관련 튜토리얼: java 입문 튜토리얼)

3 Hibernate와 ibatis의 차이점

ibatis: 오픈 소스 프로젝트는 시작하기 쉽고 유연합니다. , 그리고 과도한 개발 작업량. 대부분 자체 SQL 및 많은 구성 파일을 작성합니다

Hibernate: 개발 효율성이 높은 오픈 소스 객체 관계형 매핑 프레임워크이지만 SQL을 방해할 수 없으며 최적화 수준이 낮습니다

4. mybatis 연결 풀에 대해 이야기해 보겠습니다.

일반적인 mybatis 연결 풀에는 기본, c3p0 및 dbcp의 세 가지 유형이 있습니다. DataSource 인터페이스는 팩토리 모드를 통해 생성되며 unpooledDataSource(연결 풀이 없는 데이터 소스) 및 PooledDataSource(연결 풀이 있는 데이터 소스). 객체 획득

우선 데이터베이스에 연결하려면 객체가 필요합니다. .SQL 문을 실행할 때 연결 개체입니다. 두 번째: PooledDataSource 데이터 소스는 연결 풀 개체를 PooledConnection 개체로 래핑합니다. MyBatis는 연결 풀의 연결 풀을 유휴 상태(idle)와 활성 상태(active)의 두 가지 상태로 나눕니다. PooledConnection 개체는 PoolState 컨테이너의 2개 목록 컬렉션인dleConnections 및 activeConnections에 저장됩니다.

idle(유휴) 상태 , PooledConnection 객체는 사용되지 않는 현재 유휴 상태의 PooledConnection 컬렉션에 배치됩니다. PooledDataSource의 getConnection() 메서드가 호출되면 PooledConnection 객체가 먼저 이 컬렉션에서 가져옵니다. java.sql.Connection 객체가 모두 사용되면 MyBatis는 이를 PooledConnection 객체로 래핑하고 이 컬렉션에 넣습니다.

활성 상태에서 PooledConnection 개체는 현재 사용 중인 PooledConnection 컬렉션을 나타내는 activeConnections라는 ArrayList에 배치됩니다. PooledDataSource의 getConnection() 메서드가 호출되면 pooledConnection 개체가dleConnections 컬렉션에서 먼저 가져옵니다. 그렇지 않은 경우 컬렉션이 가득 찼는지 확인합니다. 그렇지 않으면 PooledDataSource가 PooledConnection을 생성하고 이를 이 컬렉션에 추가한 후 반환합니다.

(추천 비디오 튜토리얼:

java 강좌

)

5. 원리

사용자가 요청을 보내면 프런트 엔드 컨트롤러 DispatcherServlet이 이를 포착하고

DispatcherServlet은 HandlerMapping 프로세서 매핑 관리 객체를 호출하여 핸들러 프로세서를 얻습니다.

DispatcherServlet은 다음을 기반으로 적절한 어댑터 HandlerAdpter를 얻습니다. Handler와 HttpMessageConveter는 요청 정보를 지정된 응답 객체로 변환합니다.

어댑터를 사용하여 요청 매개변수를 Handler에 채우면 Spring은 Handler(Controller) 실행을 시작하여 데이터 변환, 데이터 검증 및 데이터를 수행합니다. 형식 지정 작업

Handler가 실행된 후 ModelAndView 객체가 DispatcherServlet으로 반환됩니다.

반환된 ModelAndView를 기반으로 적절한 ViewResolver 뷰 파서를 선택하고 ModelAndView가 지정한 뷰를 찾습니다.

ViewResolver는 Model과 View를 결합하여 렌더링합니다.

페이지를 표시합니다.

위 내용은 다년간의 개발 경험을 바탕으로 정리한 Java 인터뷰 질문 - (7)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿