많이 어려운 내용은 없는듯 싶다.
한가지 처음보는것은 @PageableDefault 인데 이런 방법으로도 정렬을 사용할수 있다는것을 알수가 있었다.
두개의 차이점은 어떻게 화면에 보이게 할지를 정해주는것이다.
Pageable의 return 값은 Page지만 getContent의 return 값은 List이기 떄문에 이런식으로도 활용이 가능하다.
update에 대한 코드이다.
많이 어려운 부분은 아니니 skip
Controller를 통해서 user객체를 save하게 되면 JPA에 있는 영속성 컨텍스트 에 1차 캐시로 user객체를 만들게 되는데 이것을 영속화라고 한다.
이후 영속화된 객체를 DB로 데이터가 이동하게 되는데 이것을 flush 라고 한다.
하지만 DB로 데이터가 이동을 하였다고 JPA의 1차 캐시에 있는 값이 사라지지 않는다.
그후 만약 select를 통해서 user의 값을 가져오려고 하면 일단 영속화가 되어있는지 확인한뒤 영속화가 되어있다면 1차 캐시에 있는 값을 가져온다
일단 id값이 2인 데이터를 가져오게 된다면 DB에 있는 값을 가져 온뒤 영속화가 이루어 진다.
값의 변경이 끝난후 다시 DB에 저장을 하기 위해 save를 사용하게 되면
1차 캐시에 있는 id값이 2인 데이터와 비교를하게 되고 변경된 사항을 1차 캐시에 있는 데이터에 적용을 하게 된다.
그후 flush해서 값일 밀어넣게 되면 DB의 값이 변경이 되게 된다.
@Transactional 이 하는 역할은 자동으로 commit 하는 것이다.
영속화는 값을 DB에서 꺼내오거나 값을 추가해주게 되면 자동으로 이루어 진다.
어려운것은 없는 코드라고 생각한다.