JPA 4

[ JPA ] 사이드 프로젝트 중 만난 문제 (연관관계)

연관관계 개념은 공부를 한 상태지만 실전에서 사용하려고 하니 여전히 어려운 것 같다ㅠㅠ 댓글 구현을 끝내고 남은 api 파트를 맡게 되어 구현하는 도중 만나게 된 문제이다. 기본적인 것처럼 보이지만 jpa를 공부하고 있는 중이다보니 이런 기본적인 문제도 해결하고, 원인을 찾는것에 시간을 소비하게 되는 것 같다. 상황 설명 Post와 Image 테이블은 양방향 연관관계를 맺고 있다. 이해를 위해 Post, Image 테이블에서 간단하게 필요한 컬럼들만 남겨보았다. Post public abstract class Post extends TimeAuditingEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post..

JPA 2023.02.03

[ JPA ] 프로젝트 도중 만난 에러 ( feat. 트랜잭션 )

요즘 그룹스터디에서 사이드 프로젝트를 진행중이다. 간단한 지역 모임 구하기 커뮤니티인데 나는 현재 댓글 기능을 구현하고 있다. JPA를 공부한 이후로 처음 활용해보는 프로젝트라서 그런지 시행착오로부터 배우고 느끼는게 많다... ㅎㅎ 그 중에서 기억에 남는 cascade와 트랜잭션에 대해 기록을 남겨보려고 한다. 상황 대댓글 기능을 구현하고 있었다. Comment Entity에 레벨, 그룹등의 필드를 추가하여 대댓글을 구현하는 방법이 있지만, 나는 JPA의 특성을 적극 활용하여 대댓글을 만들고 싶은 마음에 연관관계를 통해 대댓글을 구현하고자 했다. 그래서 Comment Entity에 아래와 같이 parentCommentId, childComments 컬럼을 추가했다. Comment @Column(updat..

JPA 2023.01.12

[ Jpa ] 연관관계

Jpa 공부하면서 정말 어려웠던 개념이 몇가지 있는데 그 중 하나가 연관관계 매핑이다. jdbcTemplate, mybatis를 사용한 경험이 있는 나는 fk를 이용해 테이블들의 연관된 정보를 가져오는 것에 익숙해져있었기 때문이다. 그러나 Jpa 연관관계를 익히기 위해선, 객체들 간의 관계와 테이블 간의 관계의 차이점을 잘 알아야 한다. 테이블과 객체의 차이 테이블은 외래키(fk)로 join을 사용하여 연관된 테이블을 찾는다. 객체는 참조를 사용하여 연관된 객체를 찾는다. 여기 예시를 보면 더 잘 이해가 될 것 이다. [ 객체 연관관계 ] 단방향이다. Member id Team team username ↓ Team id name [ 테이블 연관관계 ] member member_id (pk) team_id..

JPA 2023.01.06

[ Jpa ] 영속성 컨텍스트

Persistance Context 한국어로는 영속성 컨텍스트라고 한다. context란, 프레임워크에서 주로 컨테이너들이 관리하고 있는 내용을 context라고 한다. persistance란 사라지지 않고, 지속적으로 접근할 수 있다는 의미이다. 보통 메모리에 존재하는 데이터는 서비스가 종료되면 사라진다. 그런 데이터를 사라지게 하지 않고, 지속적으로 처리하는 방법은 파일로 저장하거나, DB에 저장하는 것이다. 이렇게 데이터를 영속화하는데 사용되는 컨테이너를 영속성 컨텍스트라고 한다. 좀 더 풀어서 말하면 영속성 컨텍스트는 JPA 컨테이너 안에서 동작하는 entity의 맥락을 관리하는 것 이다. 원래는 persistence.xml파일을 로딩하여 영속성 컨텍스트 설정을 할 수 있다. 이를 전혀 신경쓰지 ..

JPA 2022.12.08