Hibernate 원리 및 응용
3359 단어 Hibernate
원리:
1. Configuration()을 사용합니다.configure();hibernate를 읽고 해석합니다.cfg.xml 프로필
2. hibernate.cfg.xml의
3. config를 통해buildSessionFactory();//SessionFactory 만들기
4.sessionFactory.openSession();//Sesssion 열기
5.session.beginTransaction();//트랜잭션 생성
6.persistent 운영 지속화 작업
7.session.getTransaction().commit();//사무를 제출하다
8. 세션 닫기
9. SesstionFactory 닫기
왜
1. JDBC가 데이터베이스에 접근하는 코드를 봉인하여 데이터 접근층의 번거로운 중복 코드를 크게 간소화시켰다.
2. Hibernate는 JDBC의 주류 지구화 프레임워크를 바탕으로 우수한 ORM 실현이다.그는 DAO 계층의 인코딩 작업을 상당히 간소화했다
3. Hibernate는 바이트 코드 강화 프로그램이 아닌 자바 반사 메커니즘을 사용하여 투명성을 실현한다.
4.hibernate의 성능은 매우 좋다. 왜냐하면 그것은 경량급 프레임워크이기 때문이다.매핑의 유연성이 뛰어나다.그것은 일대일로부터 다대다까지의 각종 복잡한 관계 데이터베이스를 지원한다.
2. Hibernate는 어떻게 로딩을 지연합니까?
1. Hibernate2 지연 로드 구현: a) 솔리드 객체 b) 컬렉션(Collection)
2. Hibernate3는 속성의 지연 로딩 기능을 제공합니다.
Hibernate가 데이터를 조회할 때 데이터가 메모리에 존재하지 않고 프로그램이 진정으로 데이터에 대한 조작을 할 때 대상이 메모리에 존재하기 때문에 로드 지연을 실현했다. 그는 서버의 메모리 비용을 절약하여 서버의 성능을 향상시켰다.
3. Hibernate에서 클래스 간의 관계를 어떻게 실현합니까?(예: 일대다, 다대다 관계)
클래스와 클래스 간의 관계는 주로 테이블과 테이블 간의 관계를 조작하는 데 나타난다. 그들은 도시에서 대상을 조작한다. 우리 프로그램에서 모든 테이블과 클래스를 한데 비추고 프로필에 있는 many-to-one, one-to-many, many-to-many,
4. Hibernate의 캐시 메커니즘
1. 내부 캐시는 Hibernate에서 일급 캐시라고 하는데 응용 사물급 캐시에 속한다
2. L2 캐시:
a) 애플리케이션 및 캐시
b) 분산 캐시
조건: 데이터는 제3자에 의해 수정되지 않으며, 데이터 크기가 수용 가능한 범위, 데이터 업데이트 빈도가 낮고, 같은 데이터가 시스템에서 빈번하게 사용되며, 중요하지 않은 데이터
c) 제3자 캐시의 실현
1급 캐시:session급의 캐시도 사무급의 캐시라고 하는데 실체만 캐시하고 생명주기는session과 일치합니다.관리할 수 없습니다.
표시된 호출을 사용하지 않습니다.
2단계 캐시:sessionFactory 캐시라고도 하는데 프로세스 단계의 캐시라고도 부른다. 제3자 플러그인을 사용하여 이루어진 것도 캐시 실체이고 생명주기와sessionFactory가 일치하여 관리할 수 있다.
먼저 세 번째 플러그인을 설정합니다. 우리는 EHCache를 사용합니다. hibernate에서.cfg.xml 파일에 추가
<property name="hibernate.cache.user_second_level_cache">true</property>
맵에도 표시할 호출, 2 레벨 캐시의 조회 캐시: 일반 속성을 캐시합니다.연결된 테이블이 수정되면 쿼리 캐시의 생명주기도 끝납니다.
프로그램에서 쿼리 캐시를 수동으로 설정해야 합니다:query.setCacheable(true);/////////
5. Hibernate 쿼리 방식
Sql、Criteria,object comptosition
Hql:
1. 속성 조회
2. 매개 변수 조회, 명명 매개 변수 조회
3. 관련 질의
4. 페이지별 조회
5. 통계 함수
6. Hibernate를 어떻게 최적화합니까?
1. 쌍방향 일대다 연결을 사용하고 단방향 일대다를 사용하지 않는다
2. 단방향 일대다 연결을 유연하게 사용
3. 일대일 없이 다대일로 대체
4. 집합 캐시를 사용하지 않고 객체 캐시 구성
5. 일대다 컬렉션 사용 Bag, 다중 컬렉션 사용 Set
6. 계승 클래스는 현식 다중 모드를 사용한다
7. 표 필드가 적고 표 관련성이 많음을 두려워하지 않으며 2단계 캐시가 지원됩니다.
1. Hibernate는 데이터를 조회하는 몇 가지 방법이 있습니까?
(1) 탐색 대상도 조회
(2) OID 쿼리
(3)HQL
(4)QBC
(5) 로컬 SQL
2.load()와 get()의 차이
로드 방법:
Java 코드
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
get 로드 방법:Java 코드
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
두 로드 방법의 차이점:차이점1: 데이터베이스에 userId 객체가 없는 경우get 방법으로 불러오면 null로 되돌아옵니다.load를 통해 불러오면 프록시 대상을 되돌려줍니다. 뒤에 있는 코드가 user 대상의 속성(예를 들어user.getPassword () 을 호출하면 이상: org를 던집니다.hibernate.ObjectNotFoundException;
차이 2:load는 지연 로딩을 지원하고, get은 지연 로딩을 지원하지 않습니다.
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.