최대 절전 모드 세션은 제 1 레벨 캐시로, 프로세스 (스레드 바) 실행 중에 존재하는 프로세스 레벨 (스레드 바) 캐시로 이해 될 수 있습니다.
세션은 데이터베이스를 작동 할 수있는 객체로 이해할 수 있으며이 개체에서 데이터베이스를 작동하는 방법이 있습니다.
Java에서 캐시는 일반적으로 Java 객체의 특성, 일반적으로 일부 수집 유형 속성의 속성이 차지하는 메모리 공간을 나타냅니다. 세션 인터페이스의 구현 클래스 세션 impl에 일련의 Java 컬렉션이 정의되며 이러한 Java 컬렉션은 세션 캐시를 형성합니다.
일반적으로 (세션에 대한 나의 이해) : 세션은 최대 절전 모드와 DB 사이의 중개인 (물체)입니다. 세션에는 두 가지 또는 기능이 있습니다.
(1) 데이터베이스 작동 방법
(2) 세션에는 일부 속성 (세트 등)이 있으며,이 속성을 사용하여 DB로 전송 될 SQL 언어를 저장하고 DB에서 찾은 데이터를 캐시합니다.
세션 캐시
세션 캐시는 일련의 Java 컬렉션으로 구성됩니다. 객체가 세션 캐시에 추가되면이 객체에 대한 참조가 Java 컬렉션에 추가됩니다. 앞으로, 애플리케이션의 참조 변수가 더 이상 객체를 언급하지 않더라도 세션 캐시가 지워지지 않는 한 객체는 수명 주기로 유지됩니다.
세션 캐시의 역할 :
1) 데이터베이스에 액세스하는 빈도를 줄입니다.
2) 캐시의 객체가 데이터베이스의 관련 레코드와 동기화되어 있는지 확인하십시오.
세션에서 캐시를 청소할 시간 :
1) Commit () 트랜잭션 메소드가 호출되면 Commit () 메소드는 먼저 캐시를 정리합니다 (FlushMode.commit/Auto가 제공). 그런 다음 트랜잭션을 데이터베이스에 제출합니다.
2) 응용 프로그램이 세션의 find () 또는 iterate ()를 호출 할 때 캐시 변경의 영구 객체의 속성이 먼저 정리되어 쿼리 결과가 지속적인 객체의 최신 상태를 반영 할 수 있도록 캐시가 정리됩니다.
3) 응용 프로그램이 표시되면 세션의 Flush () 메소드가 호출됩니다.
세션 정리 모드가 정리 캐시 작동을 수행하는 시점 :
세션 인터페이스
세션 인터페이스는 데이터베이스 조작을위한 응용 프로그램에 최대 절전 모드가 제공하는 가장 중요한 인터페이스입니다. 저장, 업데이트, 삭제 및 쿼리를위한 기본 방법을 제공합니다.
1.save () : 캐시에 임시 개체를 추가하면 지속적인 개체가됩니다.
-> 맵핑 파일에 지정된 기본 키 생성기를 선택하여 지속적인 개체에 고유 OID를 할당합니다.
-> 삽입 문을 계획하여 매개 변수 개체의 현재 속성 값을 삽입 문에 조립하지만 save () 메소드는 즉시 sqlinsert 문을 실행하지 않으며 세션이 캐시를 정리할 때만 실행됩니다.
-> save () 메소드 이후 영구 객체의 속성이 수정되면 세션은 캐시를 청소할 때 추가 sqlupdate 문을 실행합니다.
참고 : 저장 () 메소드는 임시 객체를 지속하는 데 사용됩니다!
Save () 메소드에 지속적인 개체를 전달하면 작업이 수행되지 않으며 중복 단계
자유 상태 객체가 Save () 메소드로 전달되면 세션은이를 임시 객체로 처리하고 데이터베이스에 레코드를 다시 삽입하여 비즈니스 요구를 충족하지 않습니다!
2. update () : 고객 객체를 세션 캐시에 다시 구분하여 지속적인 객체로 바꿉니다.
---> 캐시가 정리 될 때만 실행되는 업데이트 문을 예약하고 매개 변수 객체의 속성 값이 실행될 때 업데이트 문에 조립됩니다.
참고 : Update ()는 자유 객체를 지속적인 객체로 변환합니다.
Free Object가 Update () 메소드를 통해 세션과 연결되는 한 세션은 캐시를 청소할 때 업데이트 메소드가 계획 한 업데이트 문을 실행합니다.
3.saveorupdate () : save () 및 update () 메소드의 함수가 모두 포함되어 있습니다. 전달 된 매개 변수가 임시 객체 인 경우 저장 메소드를 호출하십시오. 매개 변수가 자유 개체 인 경우 update () 메소드를 호출하십시오. 전달 된 매개 변수가 지속적인 객체 인 경우 직접 돌아갑니다.
4.로드 ()/get () : 주어진 OID를 기반으로 데이터베이스에서 지속적인 객체를로드합니다. 차이점은 데이터베이스의 OID에 해당하는 레코드가 없으면 load () 메소드가 ObjectNotFoundException 예외를 던지고 get () 메소드가 NULL을 반환한다는 것입니다.
5.Delete () : 데이터베이스의 매개 변수 개체에 해당하는 레코드를 삭제하는 데 사용됩니다. 전달 된 매개 변수가 지속적인 객체 인 경우 세션은 삭제 명령문을 실행할 계획입니다. 전달 된 매개 변수가 자유 객체 인 경우 먼저 세션과 관련된 자유 객체를 사용하여 지속적인 객체로 만들고 캐시를 청소할 때 삭제 명령문을 계획하십시오.
6.evict () : 캐시에서 매개 변수로 지정된 영구 객체를 지우십시오.
적용 가능한 경우 : 세션이 객체의 상태에 따라 데이터베이스를 계속 업데이트하기를 원하지 않습니다.
배치 업데이트 또는 배치 삭제의 경우 객체가 업데이트되거나 삭제되면 객체가 차지하는 메모리가 제 시간에 해제됩니다. 물론 배치 작업은 JDBC에 우선 순위를 부여합니다.
7. CLEAR () : 캐시의 모든 영구 객체를 지우십시오.
요약
위의 것은 최대 절전 모드 세션의 전체 내용에 대한 빠른 이해이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!