백엔드/JPA

·백엔드/JPA
소개JPA를 사용하여 데이터베이스와 객체를 연결할 때, 부모-자식 1:N 관계에서 자식 엔티티가 부모 엔티티와의 관계에서 벗어났을 때 어떻게 처리할지를 결정하는 orphanRemoval 속성의 사용법에 대해 설명하는 글입니다.orphanRemoval의 true와 false 설정에 따른 동작 차이를 알아보고, 이를 사용방법을 설명하겠습니다.    도메인 모델 정의하나의 게시글(Board)에 대해 국가별로 보기 권한(BoardCountry)을 설정할 수 있다고 가정해보겠습니다.이 예제에서는 Board 엔티티가 특정 국가에서만 볼 수 있는 게시글을 나타내며, BoardCountry 엔티티가 그 국가 정보를 담고 있습니다.  Board 엔티티@Getter@Entity@Builder@AllArgsConstruct..
·백엔드/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..
·백엔드/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..
·백엔드/JPA
JPA 에서 가장 중요하다고 생각하는 영속성 컨텍스트에 대해 정리한 글입니다. 영속성 컨텍스트란? 엔티티 매니저로 엔티티를 저장하거나 조회하면 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 한 마디로 요약하면 "엔티티를 영구 저장하는 환경" 이다. 엔티티의 4가지 상태 먼저 엔티티에는 4가지 상태가 존재한다. 비영속 영속 준영속 삭제 1. 비영속 Member member = new Member(); // 객체 생성 member.setId("member1"); member.setUsername("회원1"); 순수한 객체 상태이며 영속성 컨텍스트나 데이터베이스와는 전혀 관련이 없는 상태 2. 영속 em.persist(member); // 객체를 저장 영속성 컨텍스트에 저장한 상태, 영속 상태로써 영속성 컨텍..
·백엔드/JPA
자바 스프링 기반 백엔드 개발자라면 꼭 알아야 할 JPA의 기초에 대해서 요약 정리한 글입니다. JPA란 무엇인가? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 ORM 이란? ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻 ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해줌 자바 진영의 대표적인 ORM 프레임워크는 하이버네이트 프레임워크가 있다. JPA 의 대표적인 장점! 지루하고 반복적인 CRUD SQL을 알아서 처리해준다. 객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결해준다. JPA를 사용하는 개발자는 SQL을 직접 작성하는 것이 아니라 어떤 SQL이 실행..
dami97
'백엔드/JPA' 카테고리의 글 목록