수진개발서
article thumbnail
[JPA] 영속성 컨텍스트
코딩/JPA 2023. 7. 17. 18:59

서론 JPA에서 가장 중요한 개념 중 하나가 영속성 컨텍스트이다. 영속성 컨텍스트를 학습하면서 JPA의 내부 동작 방식을 이해하며, JPA의 장점(영속성 컨텍스트 이점) 또한도 정리해보고자 한다. 영속성 컨텍스트란? "엔티티를 영구 저장하는 환경" 이라는 뜻으로 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 위의 그림과 같이 EntityManager Factory가 고객에 요청마다 EntityManager을 생성한다. 이 EntityManager은 DB Connection을 사용하여 DB를 사용한다 em.persist(entity) //entity을 영속성 ..

article thumbnail
[SNS Project] Post 삭제 시 Like, Comment 삭제하기 (영속성 전이, Soft Delete)
프로젝트/SNS만들기 2023. 1. 7. 15:36

✅목표 Post삭제 시 연관 되어 있는 Comment, Like 삭제 포스팅을 읽기 전에 아직 영속성 전이와 Soft Delete를 알지 못한다면 아래의 포스팅을 먼저 읽기를 권장한다. https://alcoholble.tistory.com/11 https://alcoholble.tistory.com/7 [JPA] Soft Delete 적용하기 Soft Delete가 왜 필요한가? SNS 프로젝트를 진행하면서 한가지 상황을 가정해보았다. 누군가가 법적으로 침해되는 게시물이나 댓글을 작성하여 신고를 하려고한다. 하지만 그 회원이 탈퇴를 하면 alcoholble.tistory.com [JPA] 영속성 전이, 고아객체(Cascade) sns프로젝트를 진행하면서 해당 Post가 지워지기 되면 함께 관계되어있던 ..

[SNS Project] 마이피드 테스트
프로젝트/SNS만들기 2023. 1. 6. 02:08

sns만들기 프로젝트 3일차 마이피드 controller 테스트 코드를 작성하였다. 요구사항은 다음과 같다. 요구사항 - 마이피드 조회 성공 - 마이피드 조회 실패(1) - 로그인 하지 않은 경우 코드 PostControllerTest 이전의 좋아요 테스트와 다른 사항은 없으며 mock 라이브러리를 사용하여 테스트를 진행하였다. @Test @DisplayName("마이피드 조회 성공") @WithMockUser //인증된 상태 void myPeed_success() throws Exception { String url = "/api/v1/posts/my"; //데이터 만들기 PostGetResponse postGetResponse = PostGetResponse.builder() .id(1L) .titl..

[SNS Project] 좋아요 기능
프로젝트/SNS만들기 2023. 1. 4. 21:14

sns만들기 프로젝트 2일차 좋아요 기능을 구현하였다. 요구사항은 다음과 같다. 요구사항 - 좋아요 누르기 - '좋아요'는 한번만 누를 수 있음, 중복으로 누르는 경우는 좋아요 취소 좋아요 누르기 POST /posts/{postId}/likes - like를 한번 누를 때 마다 row가 1개씩 추가되는 방식으로 구현 - Json 형태로 리턴 - response 형태: { "resultCode":"SUCCESS", "result": "좋아요를 눌렀습니다." } { "resultCode":"SUCCESS", "result": "좋아요를 취소하였습니다." } 코드 Like - 해당 좋아요를 누른 게시물과 유저를 저장해야했기에 @ManyToOne으로 연관관계를 설정해주었다. - 추후 좋아요를 저장할때 Entit..