JavaRush /Java Blog /Random-KO /최대 절전 모드 인터뷰 질문
Dr-JohnZoidberg
레벨 41
Киев

최대 절전 모드 인터뷰 질문

Random-KO 그룹에 게시되었습니다
이 기사는 외국 기사를 번역하고 개선한 것입니다(자료 목록은 기사 마지막에 나열되어 있습니다). 일부 질문에 대한 답변이 확장되어 있으며, 읽기 과정에서 발생할 수 있는 답변이 포함된 타사 리소스에 대한 링크가 제공됩니다. 1) 최대 절전 모드란 무엇입니까? 이는 엔터티를 기존 관계형 데이터베이스에 개체 관계형으로 매핑하기 위한 프레임워크입니다. 프레임워크의 주요 기능: 1) 데이터베이스 테이블의 자동 생성 및 업데이트; 2) 데이터베이스에 대한 주요 쿼리(저장, 업데이트, 삭제, 검색)가 프레임워크의 메소드로 제공되므로 개발자가 작성하는 코드가 크게 줄어 듭니다. 3) SQL과 유사한 언어(HQL - 최대 절전 모드 쿼리 언어) 사용을 제공합니다. HQL 쿼리는 데이터 객체(데이터베이스 작업을 위해 준비된 POJO 클래스)와 함께 작성될 수 있습니다. 2) 최대 절전 모드 방법프로그래밍에 도움이 되나요? Hibernate는 개발자의 작업을 크게 단순화하는 여러 기능을 구현합니다. — 이러한 기능 중 하나는 최대 절전 모드를 사용하면 개발자가 대부분의 SQL 쿼리 작성을 피할 수 있다는 것입니다(이미 구현되어 있으므로 프레임워크가 제공하는 메서드를 사용하면 됩니다). — 내부적으로 Hibernate에는 애플리케이션 속도를 크게 높이는 유용한 도구가 많이 있습니다. 그 중 가장 주목할만한 것은 2단계 캐싱과 게으른 인출 및 가져오기 인출의 미세 조정입니다. — 데이터베이스 자체에 테이블을 생성합니다. 3) Hibernate로 작업을 구성하는 방법. Hibernate로 작업을 구성하는 방법에는 네 가지가 있습니다: - 주석 사용; - hibernate.cfg.xml; - hibernate.properties; - 지속성.xml. 가장 일반적인 구성 방법: 주석과 persistence.xml 파일을 통해 hibernate.properties 및 hibernate.cfg.xml 파일의 경우 hibernate.cfg.xml이 더 중요합니다(애플리케이션에 두 파일이 모두 있는 경우 다음의 설정은 hibernate.cfg 파일이 허용됩니다.xml). 주석을 사용한 구성은 편리하기는 하지만 항상 가능한 것은 아닙니다. 예를 들어 데이터베이스나 상황에 따라 다른 엔터티 구성을 원하는 경우 xml 구성 파일을 사용해야 합니다. 4) Hibernate는 어떤 주요 인터페이스를 사용합니까? 모든 Hibernate 관련 애플리케이션에서 사용되는 다섯 가지 주요 인터페이스가 있습니다: - 세션 인터페이스; - SessionFactory 인터페이스; — 구성 인터페이스 — 거래 인터페이스; — 쿼리 및 기준 인터페이스. 5) Hibernate에서 세션 인터페이스의 역할은 무엇입니까? 세션은 데이터베이스와의 통신을 담당하는 기본 인터페이스입니다. 또한 요청 개체를 생성하여 영구 개체를 얻는 데도 도움이 됩니다. (영구 객체 - 이미 데이터베이스에 있는 객체, 요청 객체 - 데이터베이스에서 쿼리 결과를 받을 때 얻은 객체, 이를 통해 애플리케이션이 작동합니다.) Session 객체는 SessionFactory에서 얻을 수 있습니다: Session session = sessionFactory.openSession(); 세션 인터페이스의 역할: 데이터베이스에 대한 jdbc 연결을 위한 래퍼입니다. (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - 트랜잭션을 위한 팩토리입니다(공식 문서에 따라 트랜잭션) - 애플리케이션이 작업 단위를 정의할 수 있도록 허용합니다. 이는 본질적으로 트랜잭션이 정의하는 것을 의미합니다. 데이터베이스와 관련된 작업의 경계). — 필수 1단계 캐시의 관리자입니다. 6) Hibernate에서 SessionFactory 인터페이스의 역할은 무엇입니까? Session 유형의 객체를 얻는 것은 SessionFactory 객체로부터입니다. 전체 애플리케이션에 대해 단 하나의 SessionFactory가 있으며 이는 애플리케이션이 시작될 때 초기화됩니다. SessionFactory는 작업 중에 애플리케이션에서 자주 사용하는 메타데이터 및 SQL 쿼리를 캐시합니다. 또한 트랜잭션 중 하나에서 수신되어 다른 트랜잭션에서 사용할 수 있는 정보를 캐시합니다. SessionFactory 객체는 다음 호출을 사용하여 얻을 수 있습니다. SessionFactory sessionFactory = 구성.buildSessionFactory(); 7) Hibernate에서는 어떤 유형의 컬렉션이 제공됩니까? 가방, 세트, ​​목록, 지도, 배열. 8) Bag형 컬렉션이란 무엇이며, 왜 사용되나요? 구현 시 Bag 컬렉션 유형은 Set과 매우 유사하지만, 차이점은 Bag이 중복 값을 저장할 수 있다는 것입니다. Bag은 색인화되지 않은 요소 목록을 저장합니다. 데이터베이스에 있는 대부분의 테이블에는 서로 관련된 데이터 요소의 위치를 ​​표시하는 인덱스가 있으며, 이러한 인덱스는 테이블에서 별도의 열로 표시됩니다. 객체 관계형 매핑을 사용하면 인덱스 열의 값이 배열의 인덱스, 목록의 인덱스 또는 맵의 키에 매핑됩니다. 인덱스 데이터가 포함되지 않은 개체 컬렉션을 가져와야 하는 경우 Bag 또는 Set 유형의 컬렉션을 사용할 수 있습니다(컬렉션에는 정렬되지 않은 형식의 데이터가 포함되어 있지만 요청에 따라 정렬될 수 있음). 9) load(); 메소드 동작의 차이점은 무엇입니까? 그리고 얻다();? 로드() 메소드; 일반적으로 요청한 개체가 이미 데이터베이스에 있는지 확실하지 않을 때 사용됩니다. 객체가 발견되지 않으면 메소드는 예외를 발생시키고, 객체가 발견되면 메소드는 데이터베이스에 있는 객체에 대한 링크인 프록시 객체를 반환합니다(데이터베이스 요청이 아직 이루어지지 않은 경우, 종류 지연 검색), 프록시 객체를 통해 필요한 객체에 직접 액세스할 때 데이터베이스에 직접 요청합니다. get() 메소드; 그런 다음 요청한 개체가 데이터베이스에 있는지 여부를 100% 확신할 수 없습니다. 존재하지 않는 객체에 접근하는 경우, get(); 메소드 null을 반환합니다. 객체가 발견되면 get() 메서드; 개체 자체를 반환하고 데이터베이스 쿼리가 즉시 수행됩니다. 10) Hibernate에서 Lazy fetching이란 무엇입니까? Hibernate의 Lazy checkout 유형은 리프(자식) 엔터티와 연결되며 상위 엔터티 체크아웃 요청이 있는 경우 공유 체크아웃 정책을 정의합니다. 간단한 예: House라는 엔터티가 있습니다. 이는 번호, 거리, 아파트 수에 대한 정보와 아파트에 거주하는 가족에 대한 정보를 저장합니다. 이러한 가족은 House 엔터티에 상대적인 하위 엔터티를 형성합니다. House에 대한 정보를 요청할 때 그 안에 사는 가족에 대한 정보를 아는 것이 완전히 불필요할 수 있습니다. 여기서는 게으른 가져오기가 도움이 되며, 이를 통해 가족에 대한 정보만 제공되도록 House 엔터티를 구성할 수 있습니다. 요청 시 이로 인해 요청이 상당히 클라우드화되고 애플리케이션 속도가 빨라집니다. ©개발베이 데이터베이스에 있는 대부분의 테이블에는 서로 관련된 데이터 요소의 위치를 ​​표시하는 인덱스가 있으며, 이러한 인덱스는 테이블에서 별도의 열로 표시됩니다. 객체 관계형 매핑을 사용하면 인덱스 열의 값이 배열의 인덱스, 목록의 인덱스 또는 맵의 키에 매핑됩니다. 인덱스 데이터가 포함되지 않은 개체 컬렉션을 가져와야 하는 경우 Bag 또는 Set 유형의 컬렉션을 사용할 수 있습니다(컬렉션에는 정렬되지 않은 형식의 데이터가 포함되어 있지만 요청에 따라 정렬될 수 있음). 9) load(); 메소드 동작의 차이점은 무엇입니까? 그리고 얻다();? 로드() 메소드; 일반적으로 요청한 개체가 이미 데이터베이스에 있는지 확실하지 않을 때 사용됩니다. 객체가 발견되지 않으면 메소드는 예외를 발생시키고, 객체가 발견되면 메소드는 데이터베이스에 있는 객체에 대한 링크인 프록시 객체를 반환합니다(데이터베이스 요청이 아직 이루어지지 않은 경우, 종류 지연 검색), 프록시 객체를 통해 필요한 객체에 직접 액세스할 때 데이터베이스에 직접 요청합니다. get() 메소드; 그런 다음 요청한 개체가 데이터베이스에 있는지 여부를 100% 확신할 수 없습니다. 존재하지 않는 객체에 접근하는 경우, get(); 메소드 null을 반환합니다. 객체가 발견되면 get() 메서드; 개체 자체를 반환하고 데이터베이스 쿼리가 즉시 수행됩니다. 10) Hibernate에서 Lazy fetching이란 무엇입니까? Hibernate의 Lazy checkout 유형은 리프(자식) 엔터티와 연결되며 상위 엔터티 체크아웃 요청이 있는 경우 공유 체크아웃 정책을 정의합니다. 간단한 예: House라는 엔터티가 있습니다. 이는 번호, 거리, 아파트 수에 대한 정보와 아파트에 거주하는 가족에 대한 정보를 저장합니다. 이러한 가족은 House 엔터티에 상대적인 하위 엔터티를 형성합니다. House에 대한 정보를 요청할 때 그 집에 사는 가족에 대한 정보를 아는 것이 완전히 불필요할 수 있습니다. 여기서는 게으른 가져오기가 도움이 되며, 이를 통해 가족에 대한 정보만 제공되도록 House 엔터티를 구성할 수 있습니다. 요청 시 이로 인해 요청이 상당히 클라우드화되고 애플리케이션 속도가 빨라집니다. ©개발베이 데이터베이스에 있는 대부분의 테이블에는 서로 관련된 데이터 요소의 위치를 ​​표시하는 인덱스가 있으며, 이러한 인덱스는 테이블에서 별도의 열로 표시됩니다. 객체 관계형 매핑을 사용하면 인덱스 열의 값이 배열의 인덱스, 목록의 인덱스 또는 맵의 키에 매핑됩니다. 인덱스 데이터가 포함되지 않은 개체 컬렉션을 가져와야 하는 경우 Bag 또는 Set 유형의 컬렉션을 사용할 수 있습니다(컬렉션에는 정렬되지 않은 형식의 데이터가 포함되어 있지만 요청에 따라 정렬될 수 있음). 9) load(); 메소드 동작의 차이점은 무엇입니까? 그리고 얻다();? 로드() 메소드; 일반적으로 요청한 개체가 이미 데이터베이스에 있는지 확실하지 않을 때 사용됩니다. 객체가 발견되지 않으면 메소드는 예외를 발생시키고, 객체가 발견되면 메소드는 데이터베이스에 있는 객체에 대한 링크인 프록시 객체를 반환합니다(데이터베이스 요청이 아직 이루어지지 않은 경우, 종류 지연 검색), 프록시 객체를 통해 필요한 객체에 직접 액세스할 때 데이터베이스에 직접 요청합니다. get() 메소드; 그런 다음 요청한 개체가 데이터베이스에 있는지 여부를 100% 확신할 수 없습니다. 존재하지 않는 객체에 접근하는 경우, get(); 메소드 null을 반환합니다. 객체가 발견되면 get() 메서드; 개체 자체를 반환하고 데이터베이스 쿼리가 즉시 수행됩니다. 10) Hibernate에서 Lazy fetching이란 무엇입니까? Hibernate의 Lazy checkout 유형은 리프(자식) 엔터티와 연관되어 있으며 상위 엔터티 체크아웃 요청이 있는 경우 공유 체크아웃 정책을 정의합니다. 간단한 예: House라는 엔터티가 있습니다. 이는 번호, 거리, 아파트 수에 대한 정보와 아파트에 거주하는 가족에 대한 정보를 저장합니다. 이러한 가족은 House 엔터티에 상대적인 하위 엔터티를 형성합니다. House에 대한 정보를 요청할 때 그 집에 사는 가족에 대한 정보를 아는 것이 완전히 불필요할 수 있습니다. 여기서는 게으른 가져오기가 도움이 되며, 이를 통해 가족에 대한 정보만 제공되도록 House 엔터티를 구성할 수 있습니다. 요청 시 이로 인해 요청이 상당히 클라우드화되고 애플리케이션 속도가 빨라집니다. ©개발베이 프록시 개체를 통해 필요한 개체에 직접 액세스할 때 데이터베이스에 직접 쿼리합니다. get() 메소드; 그런 다음 요청한 개체가 데이터베이스에 있는지 여부를 100% 확신할 수 없습니다. 존재하지 않는 객체에 접근하는 경우, get(); 메소드 null을 반환합니다. 객체가 발견되면 get() 메서드; 개체 자체를 반환하고 데이터베이스 쿼리가 즉시 수행됩니다. 10) Hibernate에서 Lazy fetching이란 무엇입니까? Hibernate의 Lazy checkout 유형은 리프(자식) 엔터티와 연관되어 있으며 상위 엔터티 체크아웃 요청이 있는 경우 공유 체크아웃 정책을 정의합니다. 간단한 예: House라는 엔터티가 있습니다. 이는 번호, 거리, 아파트 수에 대한 정보와 아파트에 거주하는 가족에 대한 정보를 저장합니다. 이러한 가족은 House 엔터티에 상대적인 하위 엔터티를 형성합니다. House에 대한 정보를 요청할 때 그 집에 사는 가족에 대한 정보를 아는 것이 완전히 불필요할 수 있습니다. 여기서는 게으른 가져오기가 도움이 되며, 이를 통해 가족에 대한 정보만 제공되도록 House 엔터티를 구성할 수 있습니다. 요청 시 이로 인해 요청이 상당히 클라우드화되고 애플리케이션 속도가 빨라집니다. ©개발베이 프록시 개체를 통해 필요한 개체에 직접 액세스할 때 데이터베이스에 직접 쿼리합니다. get() 메소드; 그런 다음 요청한 개체가 데이터베이스에 있는지 여부를 100% 확신할 수 없습니다. 존재하지 않는 객체에 접근하는 경우, get(); 메소드 null을 반환합니다. 객체가 발견되면 get() 메서드; 개체 자체를 반환하고 데이터베이스 쿼리가 즉시 수행됩니다. 10) Hibernate에서 Lazy fetching이란 무엇입니까? Hibernate의 Lazy checkout 유형은 리프(자식) 엔터티와 연결되며 상위 엔터티 체크아웃 요청이 있는 경우 공유 체크아웃 정책을 정의합니다. 간단한 예: House라는 엔터티가 있습니다. 이는 번호, 거리, 아파트 수에 대한 정보와 아파트에 거주하는 가족에 대한 정보를 저장합니다. 이러한 가족은 House 엔터티에 상대적인 하위 엔터티를 형성합니다. House에 대한 정보를 요청할 때 그 안에 사는 가족에 대한 정보를 아는 것이 완전히 불필요할 수 있습니다. 여기서는 게으른 가져오기가 도움이 되며, 이를 통해 가족에 대한 정보만 제공되도록 House 엔터티를 구성할 수 있습니다. 요청 시 이로 인해 요청이 상당히 클라우드화되고 애플리케이션 속도가 빨라집니다. ©개발베이
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION