내 겨울잠 POJO 클래스입니다.최대 절전 모드로 사용자의 부모 클릭으로 하위 항목로드?
@Entity
@Table(name = "PARENT")
public class Parent {
@Id
private int id;
@Column(name = "NAME")
private String name;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
private List<Child> children;
// Getters and Setters...
}
@Entity
@Table(name = "CHILD")
public class Child {
@Id
private int id;
@Column(name = "NAME")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID", nullable = false)
private Parent parent;
// Getters and Setters...
}
여기에는 최대 절전 모드에 대해 배운 두 가지 방법이 있습니다.
Session session = sessionFactory.openSession();
List<Child> children = null;
try {
children = session.createCriteria(Child.class, "C")
.add(Restrictions.eq("C.parent", parent)
.list();
} finally {
session.close();
}
또는
Session session = sessionFactory.openSession();
List<Child> children = null;
try {
session.refresh(parent);
children = parent.getChildren();
} finally {
session.close();
}
새로 고침을 사용하고 나중에 하나, 내가 최대 절전 모드로 실험 실수 동안 발견 (P 난 아직도 멍청한 놈이야).
Q.1 가장 좋은 방법은 무엇입니까?
Q.2 게이 터 메소드를 호출하여 모든 하위 항목을 가져올 수있는 경우 Criteria API 또는 HQL을 사용하여 게으른로드 멤버를 얻는 이유는 무엇입니까?
또한 의심의 여지가 있습니다! 잘못된 목적으로 refresh() 메서드를 사용하고 있습니까? 다른 용도로 사용됩니까? 따라서 프로덕션 용도로이 방법을 사용할 수 있습니까? – Akshat
새로 고침 설명서는 [this] (http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html#refresh (java.lang.Object))를 참조하십시오. 당신은 그것을 올바르게 사용하고 있습니다. 그리고 네.이 접근법은 절대적으로 생산을 위해 사용될 수 있습니다. (이 경우에는 새로 고치지 말아야 할 문서에서 언급했듯이 장기 실행 세션이 없다면). –
자, 부모와 자식을위한 스윙 GUI를 만들 때 내 세션이 시작되고 프레임이 보이도록 설정하기 전에 GUI가 완료되면 닫힙니다. 장기 실행 세션이라고할까요? – Akshat