blog - 4

Lumi·2021년 8월 17일
0

project

목록 보기
7/16
post-thumbnail

많이 어려운 내용은 없는듯 싶다.

  • 단순히 테스트용으로 만들어 본것이다.

한가지 처음보는것은 @PageableDefault 인데 이런 방법으로도 정렬을 사용할수 있다는것을 알수가 있었다.

1번

2번

두개의 차이점은 어떻게 화면에 보이게 할지를 정해주는것이다.
Pageable의 return 값은 Page지만 getContent의 return 값은 List이기 떄문에 이런식으로도 활용이 가능하다.

update


update에 대한 코드이다.

  • 값을 수정하는것이기 떄문에 PutMapping을 사용한다.

많이 어려운 부분은 아니니 skip

영속성 컨텍스트

1. 값이 새로 insert 될 떄

Controller를 통해서 user객체를 save하게 되면 JPA에 있는 영속성 컨텍스트 에 1차 캐시로 user객체를 만들게 되는데 이것을 영속화라고 한다.

이후 영속화된 객체를 DB로 데이터가 이동하게 되는데 이것을 flush 라고 한다.

하지만 DB로 데이터가 이동을 하였다고 JPA의 1차 캐시에 있는 값이 사라지지 않는다.

  • 쉽게 설명하면 데이터 이동이 아닌 복사라고 생각하면 된다.

그후 만약 select를 통해서 user의 값을 가져오려고 하면 일단 영속화가 되어있는지 확인한뒤 영속화가 되어있다면 1차 캐시에 있는 값을 가져온다

  • DB에있는 값을 가져오는 것이 아니다.

2. update 될 떄

일단 id값이 2인 데이터를 가져오게 된다면 DB에 있는 값을 가져 온뒤 영속화가 이루어 진다.

값의 변경이 끝난후 다시 DB에 저장을 하기 위해 save를 사용하게 되면

1차 캐시에 있는 id값이 2인 데이터와 비교를하게 되고 변경된 사항을 1차 캐시에 있는 데이터에 적용을 하게 된다.

  • DB의 값이 바로 바뀌는것이 아니라 1차 캐시에 있는 값이 먼저 바뀌게 된다.

그후 flush해서 값일 밀어넣게 되면 DB의 값이 변경이 되게 된다.

@Transactional 이 하는 역할은 자동으로 commit 하는 것이다.

  • flush역할을 한다고 생각하면 되고 @Transactional이 추가 되면 함수가 한번 실행이 될떄 자동으로 commit 하게 된다.
    save를 추가해주지 않아도 된다.
  • 이러한 값의 저장 방법을 더티 체킹 이라고 한다.

영속화는 값을 DB에서 꺼내오거나 값을 추가해주게 되면 자동으로 이루어 진다.

Delete


어려운것은 없는 코드라고 생각한다.

  • 대신 해당 id값이 없을수 있기 떄문에 try - catch문을 사용해주어야 한다.

깃허브 : https://github.com/HoJin-jjimgo/Project-blog

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글