ultra_dev
1.19 TIL 본문
📌 쿼리문 구체적으로 확인하게 해주는 것. .properties에 입력!
spring.jpa.show-sql=true
또는
spring.jpa.properties.hibernate.show_sql=true
확인하는 방법은 출력방식에 따라 나뉘기도 하고 여러가지인 것 같다.
📌 fetch 타입 Lazy는 ManyToOne에만 달아주면 됨, Eager가 디폴트 값이기 때문
OneToMany는 Lazy가 디폴트값이기 때문
근데 명시적으로 써주면 좋음!
📌findby, findAllby
둘은 차이가 없다.
by가 중요하다
all 무시!
📌JPA.. findBy 뒤에 오는 변수명 정확히 칼럼명과 일치해야함!?
예약어 사용하면 안되고 jpa 내부 메소드이기 때문에 대충 쓰면 안되고 정확해야한다!! 조심 조심 !!
📌
Hibernate: select u1_0.user_id,u1_0.address,u1_0.help_cnt,u1_0.password,u1_0.role,u1_0.user_image,u1_0.username
from users u1_0
left join board b1_0 on u1_0.user_id=b1_0.username
where u1_0.role=? and b1_0.id is not null
order by u1_0.user_id asc offset ? rows fetch first ? rows only
페이징 정렬 기능 확인 중이었는데, 자꾸 오류가 뜨고 찾아보면 다른 얘기라 진짜 답이 없는 상황이었는데
에이스분의 도움을 받아 해결했다!
내가 멍청하게 연관관계 맺을 때 mappedBy를 user가 아닌 엉뚱한 걸로 해놔서 그랬던 거였다...
졸면서 했었나 왜 그렇게 코드를 썼었는지 아직도 이해가 안간다. 정말 말이 안되는 코드인데..
놀라운 건 엄청 긴 쿼리문에서 딱 저 부분을 캐치해내고
연관관계 매핑이 잘못된 걸 눈치챈 에이스분이다
와 SQL 지식을 이렇게 쓰는구나 싶어서 놀랐고 SQL을 공부 해야겠다는 생각이 엄청 들었다.
쿼리문을 하나하나 분석해가며 저런식으로 오류를 찾아낼 수 있구나하면서 감탄했다.
저 원인을 못찾아서 이것 저것 건드려보면서 뭔가 배우긴 했는데
정신이 없어서 정리가 안된다!!! 천천히 다시 공부해봐야겠다.