수진개발서
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
[JPA] JPA개념 및 실습 환경 셋팅
코딩/JPA 2023. 7. 17. 17:36

서론 요즘은 필수 기술스텍이 된 JPA를 학습하려고 한다. 왜 JPA를 사용하는 것인지? JPA는 무엇인지? 그리고 마지막으로 JPA의 사용 환경을 셋팅하면서 실습 준비를 할 것이다. 해당 포스팅은 모두 김영한님의 "자바 ORM 표준 JPA프로그래밍-기본편"을 기반으로 작성하는 것이다. JPA란? JPA가 무엇인지 정의하기 전에 한 가지 개념에 대해 알아야한다. ORM(Object Relational Mapping) 이란? RDB테이블을 객체지향적으로 사용하기 위한 기술 객체와 RDB의 테이블을 매핑하여 자바 프로그램 코드상에서 RDB를 객체지향적으로 쓸 수 있게 고려한 기술 객체는 객체대로 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 이와 마찬가지로 자바의 영속성..

[JPA] 영속성 전이, 고아객체(Cascade)
코딩/JPA 2023. 1. 7. 14:58

sns프로젝트를 진행하면서 해당 Post가 지워지기 되면 함께 관계되어있던 댓글과 좋아요의 상태를 어떻게 해야하는가? 라는 상황이 생겼다. 이를 해결하기 위해서 영속성 전이라는 주제를 학습하게 되었다. ✅ CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 ex) 부모 엔티티 저장 시 자식 엔티티 저장 영속성 전이는 연관 관계를 매핑하는 것과 아무 관련이 없음 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화 하는 편리함만을 제공할 뿐 Cascade 종류 CascadeType.ALL 모두 적용 CascadeType.PERSIST 영속 CascadeType.MERGE 병합 CascadeType.REMOVE 삭제 CascadeType.REFRESH REFRES..

article thumbnail
[JPA] Soft Delete 적용하기
코딩/JPA 2023. 1. 6. 00:46

Soft Delete가 왜 필요한가? SNS 프로젝트를 진행하면서 한가지 상황을 가정해보았다. 누군가가 법적으로 침해되는 게시물이나 댓글을 작성하여 신고를 하려고한다. 하지만 그 회원이 탈퇴를 하면 그 회원이 가지고있는 데이터들이 모두 삭제되었기 때문에 더 이상 신고할 증거가 남지 않게된다. 이러한 상황 외에도 회원이 탈퇴해도 알수없음으로 표시되면서 사라지지 않는 게시물들의 존재를 볼 수 있었다. 이러한 것은 모두 데이터를 물리적으로 삭제한 것(hard delete)이 아닌 논리적으로 삭제한것(soft delete)이다. Hard Delete와 Soft Delete Hard delete: delete쿼리를 날려서 데이터베이스에서 실제로 삭제하는 방법(물리 삭제) Soft delete: 실제로 데이터베이스..