Spring boot(4)

미아·2022년 12월 22일

수업

목록 보기
8/9

entity?

@Entity가 붙은 클래스는 JPA가 관리해주며, JPA를 사용해서 DB 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑이 가능합니다.

+정보의 저장 및 전달을 위해서 데이터베이스랑 똑같이 만든 필드

데이터 베이스와 맵핑 해주는 것. grdle 방식에서는 mapper를 만들지 않고, 엔티티에서 쿼리문을 만들고?거기서 디비와 연결되어 작동. 이걸 JPA가 작동시켜줌(다 자동화)

시나리오

-> 서버에 갔다왔다의 문제가아님(ajax)

insert

-> 기존 article 개수 센 다음, 기존거랑 1차이
(필요한거: 기존 변수, 현재 변수)
-> 기존카운트구하기
-> insert 어케함? save()로!
- Article에 title, content, hashtag 3개만 필요한데 ,원래는 생성자로 가져오자나!(근데 private이어서 못씀)
of메서드 이용해서 가져온다!(그럼 변수에 담아야지)
-> 현재카운트(+1한거랑 isEqualTo메서드 사용해서 비교함), 항상 tdd의 마지막은 뭐야! assertThat으로 t ? f ? 판별!

update

-> 해야할거 : 이전꺼랑 지금꺼랑 다른게 있다/ 없다(기존의 데이터 하나 있어야하고, 그걸 수정했을때를 관찰할거임)

  • 해야할 일
    1) 기존의 컨텍스트로부터 하나 엔티티 객체를 가져온다.( = db에서 한줄 뽑아온다)
    2) 업데이트로 해시태그를 바꾸기

  • 순서
    1) 기존의 영속성 컨텍스트(cascading)으로부터 하나 엔티티 객체를 가져온다.
    =>findById(id번호(타입이 long이니까, L써줌).orElseThrow();

    +article이라는 클래스 객체화시켜서 쓰는거니까 하나만 가져올순 없고 전체 다 가져가야함

순서2)

saveAndFlush() 해주면 , 판단하지말고 걍 넣어!

순서3) 위에서 바꾼 savedArticle에 업데잍 된 hashtag 필드에 updateHashtag에 저장되어있는 값("#abcd")가 있는지 확인해라

  • hasFieldOrPropertyWithValue(키(string), "값")
delete

순서!
기존에 데이터들이 있다고 치고, 그 중에 값을 하나 꺼내고 꺼낸걸 지워야한다.(지운거 확인은 개수로 한다)
1) 기존의 영속성 컨텍스트로부터 하나 엔티티 객체를 가져옴
-> findbyid
2) 지우면 db에서 하나 사라지기때문에 count를 구해놓고
-> 레파지토리.count();(변수에 담기!, 타입은 long이겠네!)
+전체댓글의 count도 구해두자!(연관된 댓글까지 삭제할거라서, id가 1번이 글의 댓글 수를 구해서... 전체 댓글 수에서 뺀 값이 현재 댓글수랑 같으면....! 통과~ )
3) delete 하고(-1) -> .delete(); -> 전체중에서 하나 지워야함!
4) 2번에서 구한 count와 지금 순간의 개수 비교해서 1 차이나면 테스트 통과 -> .isEqualsTo()

-> article : 매핑하는 애
-> articlerepository : 저장소

live template

git kraken올릴거!


-> 전부다 커밋 푸시 한 뒤, 깃헙 가서 pull and merge


-> 다른데 클릭한 후에 #15 없애야함

profile
새로운 것은 언제나 재밌어 🎶

0개의 댓글