하이버네이트한테 찾은 보드를 줘 → new Board(빈 생성자)하는데 안에 id, title, content, created_at 은 있어 여기까지는 매핑되는데 userId넣으려니까 타입이 불일치함 이건 내가 릴레이션 매핑해야겠다 해서
user에서 1번 찾아서 통째로 넣어준다 이게 ORM이다 → new board
- 한번 찾았다면
또 select 하지 않는다 이미 조회했으니까
하지만 2번은 아직 안 찾아봤으니까 select 하고 다음부터 select 하지 않는다
findall 한번 user 2번뜬다
- 만약 더미를 userid가 전부 1이라면 → 보드 테이블 1번 user한번 나온다
- 만약 더미를 userid가 1,2,3 이 다 있다면 → 보드 테이블 1번 user 3번 나온다
DS는 어노테이션 찾아서 컨트롤러 찾아준다
아파치 톰캣이 request객체 주고 ? DS에 request,response 준다 → controller → 레파지토리 → 하이버네이트(엔티티메니저를 통해서 레파지토리에 접근한다(Object관리는 자료구조를 가지고 있다 어떤 Object인가? @Entity가 붙어 있는 object를 관리한다 다른 객체는 못 들어온다, )) → h2DB
findall 하면 h2에서 정보 받고 하이버 네이트에(총 5개의 객체가 만들어 진다) → 객체 안에 비어있어서 다른 것은 다 넣었는데 userid만 못넣어서 select 다시 h2에 요청하고 → u1 하이버 네이트 만들어져서 b1객체에 들어감 → 2번 board테이블 넣으려니까 userid이미 찾은게 있으니까 가지고 감 (아마 1번 2번 보드에 들어간 userid는 해쉬가 같을 것이다)
3번객체에 id, title 등 넣고
응답이 안돼서 컨트롤러가 레파지토리 2번 때리면 →
1번 findall 2번 findById 두 번 찾으면 두번째에서는 조회 안하고 HB에 있는 이미 있는 자료 가지고 온다
만약 3번을 찾으면 없어서 select 쿼리 날라가고 hb에 3번이 들어가고
고객이 정보를 받으면 hb에 있는 정보들이 다 사라진다!!
Share article