이 기사의 주요 연구는입니다
게으른 개념 : 실제로 사용될 때만 객체 만로드하십시오.
최대 절전 모드의 게으른 전략은 다음과 같이 사용할 수 있습니다.
1. <class> 태그에서 값을 가져올 수 있습니다 : true/false.
2. <property> 태그에서 값을 가져올 수 있습니다 : true/false, 클래스 향상 도구는 바이트 코드를 수정하기 위해 필요합니다 (이는 의미가 없습니다).
3. <set> 및 <string> 태그에서 값을 가져올 수 있습니다 : true/false/extra.
4. <voll-to-one> 및 <일대일>의 단일 엔드 연관 태그에서 값을 얻을 수 있습니다 : False/Proxy/Nophy
클래스 태그의 게으른 것을 살펴 보겠습니다.
user.java :
공개 클래스 사용자 {/ * id */private int id;/ * 사용자 이름 */개인 문자열 이름;/ * 사용자 암호 */개인 문자열 암호;/ * 생성 시간 */개인 날짜 createTime; // setter and getter method}user.hbm.xml :
<? xml 버전 = "1.0"?> <! docType Hibernate Mapping Public "-// hibernate/hibernate 매핑 dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">-패키지 이름을 대표합니다. package = "com.lixue.bean"> <!-클래스 노드의 이름은 엔티티의 클래스 이름을 나타내고, 테이블은 데이터베이스의 테이블에 맵핑 된 엔티티의 이름을 나타냅니다-> <class name = "user"table = "t_user"lazy = "true"> <id name = "id"> <Generator /> < /id> <!-Mapping Normal Properties- 이름 = "비밀번호" /> <속성 이름 = "CreateTime" /> < /class> < /hibernate-mapping>
테스트 방법 :
public void testload1 () {/*사용자 가져 오기,로드 자체가 게으른로드를 지원합니다 (클래스 태그 게으른 게으른은 일반 속성에 유효합니다)*/user user = (사용자) hibernateutils.getSession (). load (user.class, 1);/*는 쿼리시 ID가 지정되기 때문에 ID가 다시 확인할 필요가 없기 때문에)*/시스템. user.getId ());/*는 SQL을 발행합니다. 속성은 실제로 필요하기 때문에 SQL 명령문이 발행되고 발행 된 명령문은 모든 속성을 찾을 수 있으며 후속 속성은 문*/system.out.println ( "user.name =" + user.getName ()); 이름)*/system.out.println ( "user.password =" + user.getPassword ());/*는 SQL을 발행하지 않습니다 (이름을 확인할 때 발견되었습니다)*/system.out.println ( "user.createTime =" + user.getCreateTime ());} User user = (User) HibernateUtils.getSession().load(User.class, 1); 테스트를 위해!
객체는 객체 사용자-> handler ---> 대상 노드에 나타납니다.
1. 처음에는 대상이 널입니다. user.getId() 실행되면 쿼리시 ID가 이미 지정되어 있으므로 현재 쿼리가 의미가 없기 때문에 여전히 NULL입니다.
2. user.getName() 실행할 때 그림과 같이 문이 발행됩니다.
그림에서, 우리는 ID를 쿼리 할 때 명세서가 발행되지 않았 음을 알 수 있습니다. 방금 언급했듯이 이름 속성을 쿼리 할 때 문을 발행 하며이 진술의 기능은 모든 속성을 쿼리하는 것입니다.
3. user.getPassword() 및 user.getCreateTime() 이 실행되면 속성 값이 쿼리되었으므로 명령문은 더 이상 발행되지 않습니다.
참고 : <class> 태그의 Lazy는 일반적인 속성 만 지원하며 클래스의 컬렉션 로딩에는 영향을 미치지 않습니다.
위의 내용은 최대 절전 모드 게으른 하중의 <class> 태그에 게으른 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!