0
나는 test1 클래스와 test2 클래스를 가지고있다.하이버 네이트 너무 많은 SQL
그들은 1 대 1이고 가져 오기 유형은 게으른 다.
@Entity
@Table(name = "test1")
public class Test1 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column(name="name")
private String name;
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name = "test2_id")
private Test2 test2;
...
}
@Entity
@Table(name = "test2")
public class Test2 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column(name="name")
private String name;
@OneToOne(mappedBy = "test2")
...
}
내가 데이터베이스에서 모든 레코드를 얻으려면 :
Criteria dc2 =
sessionFactory. getCurrentSession().createCriteria(Test1.class,"mr");
List<Test1> reports2= dc2.list();
for(Test1 test:reports2){
test.getTest2().getName();
}
하지만 내 콘솔이 SQL을 보여입니다 게으른
Hibernate: select this_.id as id18_0_, this_.name as name18_0_, this_.test2_id as test3_18_0_ from test1 this_
Hibernate: select test2x0_.id as id19_1_, test2x0_.name as name19_1_, test1x1_.id as id18_0_, test1x1_.name as name18_0_, test1x1_.test2_id as test3_18_0_ from test2 test2x0_ left outer join test1 test1x1_ on test2x0_.id=test1x1_.test2_id where test2x0_.id=?
Hibernate: select test1x0_.id as id18_0_, test1x0_.name as name18_0_, test1x0_.test2_id as test3_18_0_ from test1 test1x0_ where test1x0_.test2_id=?
페치 때문에, 내가 SQL 잘 생각 ,
및 가져 오기 유형을 FetchType으로 변경합니다 .EARGER
,210Hibernate: select this_.id as id18_1_, this_.name as name18_1_, this_.test2_id as test3_18_1_, test2x2_.id as id19_0_, test2x2_.name as name19_0_ from test1 this_ left outer join test2 test2x2_ on this_.test2_id=test2x2_.id
Hibernate: select test1x0_.id as id18_1_, test1x0_.name as name18_1_, test1x0_.test2_id as test3_18_1_, test2x1_.id as id19_0_, test2x1_.name as name19_0_ from test1 test1x0_ left outer join test2 test2x1_ on test1x0_.test2_id=test2x1_.id where test1x0_.test2_id=?
은 내가 만 개 기록이있는 경우 내 시간
의 그것 폐기물, 두 번째 SQL을 이해하지 않고는 10000 번 동그라미 것입니다.
어떻게 해결할 수 있습니까? 모든 기록을 제 시간에 얻으시겠습니까? 가입으로