0%

JPA @OneToMany LAZY Fetch vs EAGER Fetch

FetchType.LAZY

csongyu/jpa-fetch

branch: feature/FetchType.LAZY

where company_code=?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Hibernate: 
select
company0_.code as code1_1_0_,
company0_.name as name2_1_0_
from
company company0_
where
company0_.code=?
Hibernate:
select
employees0_.company_code as company_4_2_0_,
employees0_.id as id1_2_0_,
employees0_.id as id1_2_1_,
employees0_.code as code2_2_1_,
employees0_.company_code as company_4_2_1_,
employees0_.name as name3_2_1_
from
employee employees0_
where
employees0_.company_code=?

where company_code in (?,?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Hibernate: 
select
company0_.code as code1_1_,
company0_.name as name2_1_
from
company company0_
where
company0_.code in (
? , ?
)
Hibernate:
select
employees0_.company_code as company_4_2_0_,
employees0_.id as id1_2_0_,
employees0_.id as id1_2_1_,
employees0_.code as code2_2_1_,
employees0_.company_code as company_4_2_1_,
employees0_.name as name3_2_1_
from
employee employees0_
where
employees0_.company_code=?
Hibernate:
select
employees0_.company_code as company_4_2_0_,
employees0_.id as id1_2_0_,
employees0_.id as id1_2_1_,
employees0_.code as code2_2_1_,
employees0_.company_code as company_4_2_1_,
employees0_.name as name3_2_1_
from
employee employees0_
where
employees0_.company_code=?

FetchType.EAGER

csongyu/jpa-fetch

branch: feature/FetchType.EAGER

where company_code=?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Hibernate: 
select
company0_.code as code1_1_0_,
company0_.name as name2_1_0_,
employees1_.company_code as company_4_2_1_,
employees1_.id as id1_2_1_,
employees1_.id as id1_2_2_,
employees1_.code as code2_2_2_,
employees1_.company_code as company_4_2_2_,
employees1_.name as name3_2_2_
from
company company0_
left outer join
employee employees1_
on company0_.code=employees1_.company_code
where
company0_.code=?

where company_code in (?,?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Hibernate: 
select
company0_.code as code1_1_,
company0_.name as name2_1_
from
company company0_
where
company0_.code in (
? , ?
)
Hibernate:
select
employees0_.company_code as company_4_2_0_,
employees0_.id as id1_2_0_,
employees0_.id as id1_2_1_,
employees0_.code as code2_2_1_,
employees0_.company_code as company_4_2_1_,
employees0_.name as name3_2_1_
from
employee employees0_
where
employees0_.company_code=?
Hibernate:
select
employees0_.company_code as company_4_2_0_,
employees0_.id as id1_2_0_,
employees0_.id as id1_2_1_,
employees0_.code as code2_2_1_,
employees0_.company_code as company_4_2_1_,
employees0_.name as name3_2_1_
from
employee employees0_
where
employees0_.company_code=?

JOIN FETCH

csongyu/jpa-fetch

branch: feature/JOIN-FETCH

where company_code=?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Hibernate: 
select
company0_.code as code1_1_0_,
employees1_.id as id1_2_1_,
company0_.name as name2_1_0_,
employees1_.code as code2_2_1_,
employees1_.company_code as company_4_2_1_,
employees1_.name as name3_2_1_,
employees1_.company_code as company_4_2_0__,
employees1_.id as id1_2_0__
from
company company0_
inner join
employee employees1_
on company0_.code=employees1_.company_code
where
company0_.code=?

where company_code in (?,?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Hibernate: 
select
company0_.code as code1_1_0_,
employees1_.id as id1_2_1_,
company0_.name as name2_1_0_,
employees1_.code as code2_2_1_,
employees1_.company_code as company_4_2_1_,
employees1_.name as name3_2_1_,
employees1_.company_code as company_4_2_0__,
employees1_.id as id1_2_0__
from
company company0_
inner join
employee employees1_
on company0_.code=employees1_.company_code
where
company0_.code in (
? , ?
)

@OneToMany N+1 SELECT

QUERIES FetchType.LAZY FetchType.EAGER JOIN FETCH
where company_code=? 2 1 1
where company_code in (?,?) 3 (N+1) 3 (N+1) 1