Backend/JPA

·Backend/JPA
소개JPA를 사용하여 데이터베이스와 객체를 연결할 때, 부모-자식 1:N 관계에서 자식 엔티티가 부모 엔티티와의 관계에서 벗어났을 때 어떻게 처리할지를 결정하는 orphanRemoval 속성의 사용법에 대해 설명하는 글입니다.orphanRemoval의 true와 false 설정에 따른 동작 차이를 알아보고, 이를 사용방법을 설명하겠습니다.    도메인 모델 정의하나의 게시글(Board)에 대해 국가별로 보기 권한(BoardCountry)을 설정할 수 있다고 가정해보겠습니다.이 예제에서는 Board 엔티티가 특정 국가에서만 볼 수 있는 게시글을 나타내며, BoardCountry 엔티티가 그 국가 정보를 담고 있습니다.  Board 엔티티@Getter@Entity@Builder@AllArgsConstruct..
·Backend/JPA
소개개발 과정에서 유지보수성과 확장성을 고려하는 것은 매우 중요합니다. 특히, 시스템이 커지고 복잡해질수록 코드의 일관성과 가독성은 유지보수의 핵심 요소가 됩니다. 이번 글에서는 알림 코드 관리 문제를 Enum Converter를 활용해 해결한 사례를 소개합니다. 이 방법을 통해 알림 코드의 관리 효율성을 높이고, 유지보수의 편의성을 극대화할 수 있었습니다.  문제프로젝트에서 알림 코드가 문자열(String) 타입으로 관리되고 있었습니다. 문제는 이 코드들이 구체적으로 어떤 알림을 발생시키는지 한눈에 파악하기 어렵다는 것이었습니다.데이터베이스나 문서를 보지 않고서는 코드가 무엇을 의미하는지 알기 힘들었으며, 문서조차 최신 상태로 유지되지 않아 정확성을 보장할 수 없었습니다.이러한 상황에서 알림 코드를 수..
·Backend/JPA
JPA 에서 엔티티의 연관관계를 설계하는 방법은 대표적으로 2가지가 있습니다. 1. @JoinColumn (조인 컬럼 - 외래 키) 2. @JoinTable (조인 테이블 - 테이블 사용) 이 글은 2가지 방법중 하나인 조인 테이블 사용법에 대해 간략하게 정리한 글입니다. 조인 테이블 장점 외래 키에 null을 허용하는 관계를 피할 수 있다. 이게 무슨말인지 코드를 먼저 보여드리면 @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; @Column(name = "name") @Comment("이름") private String..
·Backend/JPA
@Access(AccessType.FIELD), @Access(AccessType.PROPERTY) 란? JPA가 엔티티 데이터에 접근하는 방식을 지정할 수 있는 어노테이션 @Access(AccessType.FIELD) - 필드 접근 @Access(AccessType.PROPERTY) - 프로퍼티 접근 먼저 필드 접근 방식부터 알아보자 @Access(AccessType.FIELD) - 필드 접근 방식 ... 생략 @Entity @Access(AccessType.FIELD)// 생략해도 동일함 public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Transient private String..
·Backend/JPA
JPA 에서 가장 중요하다고 생각하는 영속성 컨텍스트에 대해 정리한 글입니다. 영속성 컨텍스트란? 엔티티 매니저로 엔티티를 저장하거나 조회하면 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 한 마디로 요약하면 "엔티티를 영구 저장하는 환경" 이다. 엔티티의 4가지 상태 먼저 엔티티에는 4가지 상태가 존재한다. 비영속 영속 준영속 삭제 1. 비영속 Member member = new Member(); // 객체 생성 member.setId("member1"); member.setUsername("회원1"); 순수한 객체 상태이며 영속성 컨텍스트나 데이터베이스와는 전혀 관련이 없는 상태 2. 영속 em.persist(member); // 객체를 저장 영속성 컨텍스트에 저장한 상태, 영속 상태로써 영속성 컨텍..
·Backend/JPA
자바 스프링 기반 백엔드 개발자라면 꼭 알아야 할 JPA의 기초에 대해서 요약 정리한 글입니다. JPA란 무엇인가? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 ORM 이란? ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻 ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해줌 자바 진영의 대표적인 ORM 프레임워크는 하이버네이트 프레임워크가 있다. JPA 의 대표적인 장점! 지루하고 반복적인 CRUD SQL을 알아서 처리해준다. 객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결해준다. JPA를 사용하는 개발자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행..
dami97
'Backend/JPA' 카테고리의 글 목록