https://github.com/codingspecialist/Springboot-ORM-Lazy-Eager
<aside> 💡 findByIdJPQL은 JPQL 문법으로 쿼리를 작성합니다.
findByIdNativeQuery는 NativeQuery로 쿼리를 작성합니다.
</aside>
public Board findByIdJPQL(int id){
return em.createQuery("", getEntityClass()).getSingleResult();
}
public List<BoardDetailDto> findByIdNativeQuery(int id){
return (BoardDetailDto) em.createNativeQuery("", BoardDetailDto.class).getResultList();
}
잘못된 예시
select
board0_.id as id1_0_0_,
board0_.content as content2_0_0_,
board0_.created_at as created_3_0_0_,
board0_.title as title4_0_0_,
board0_.user_id as user_id5_0_0_
from
board_tb board0_
where
board0_.id=?
잘된 예시
Hibernate:
select
board0_.id as id1_0_0_,
user1_.id as id1_2_1_,
replylist2_.id as id1_1_2_,
board0_.content as content2_0_0_,
board0_.created_at as created_3_0_0_,
board0_.title as title4_0_0_,
board0_.user_id as user_id5_0_0_,
user1_.created_at as created_2_2_1_,
user1_.email as email3_2_1_,
user1_.password as password4_2_1_,
user1_.username as username5_2_1_,
replylist2_.board_id as board_id4_1_2_,
replylist2_.comment as comment2_1_2_,
replylist2_.created_at as created_3_1_2_,
replylist2_.user_id as user_id5_1_2_,
replylist2_.board_id as board_id4_1_0__,
replylist2_.id as id1_1_0__
from
board_tb board0_
inner join
user_tb user1_
on board0_.user_id=user1_.id
left outer join
reply_tb replylist2_
on board0_.id=replylist2_.board_id
where
board0_.id=?
Hibernate:
select
user0_.id as id1_2_0_,
user0_.created_at as created_2_2_0_,
user0_.email as email3_2_0_,
user0_.password as password4_2_0_,
user0_.username as username5_2_0_
from
user_tb user0_
where
user0_.id in (
?, ?
)