JPA - 프록시란?
·
Back-End/JPA
JPA에서의 프록시 JPA에서 엔티티를 조회할 때, EntityManager.find() 를 이용해서 조회하게 되는데, 만약 해당 엔티티가 영속성 컨텍스트에 존재하지 않으면, 데이터베이스에 조회를 요청하게 된다. 엔티티를 실제로 사용하는 시점까지 데이터베이스 조회를 미루고 싶다면, EntityManager.getReference() 메소드를 사용하면 된다. 해당 메서드는 DB를 조회하지않고, 실제 엔티티 객체를 생성하지도 않는데, 데이터 베이스 접근을 위한 프록시 객체를 반환해준다. 프록시의 사용 프록시 클래스는 실제 클래스를 상속 받아서 만들어지므로 진짜 객체인지, 프록시 객체인지 구분하지 않고 사용하면 된다. 프록시 객체는 실제 객체의 참조(target)을 보관 프록시객체는 실제 객체의 메소드를 호출..
JPA - @MappedSuperclass, BaseEntity란?
·
Back-End/JPA
@MappedSuperclass 공통 매핑 정보가 필요할 때 사용한다. 주로 사용하는 컬럼인 id, name, 작성일, 등록자 등의 정보를 담은 공통으로 사용하는 정보를 모아서 작성하여야하는 코드를 줄여준다. 특징 상속관계 매핑X 엔티티X, 테이블과 매핑X 부모 클래스를 상속 받는 자식클래스에 매핑 정보만 제공 조회, 검색 불가(em.find(BaseEntity) 불가) 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장 구현 코드 @MappedSuperclass @Getter @Setter public abstract class BaseEntity { private String createBy; private LocalDateTime createDate; private String lastModif..
JPA - 상속관계 매핑
·
Back-End/JPA
참고 해당 글은 김영한님의 자바 ORM 표준 JPA 프로그래밍을 공부하며 작성한 글입니다. https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 상속관계 매핑 자바 객체에는 상속 관계가 존재하지만, 관계형 데이터베이스에서는 상속 관계가 없다. 데이터적으로 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하여 객체의 상속관계 매핑에 사용한다. 상속 관계..
JPA - 다대일, 일대다, 다대다 매핑
·
Back-End/JPA
참고 해당 글은 김영한님의 자바 ORM 표준 JPA를 공부하며 작성한 글입니다. https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 다대일[N:1] 다대일 단방향 가장 많이 사용하는 연관관계 다대일 양방향 ‘다(many)’ 쪽에 외래 키가 가게되고, 연관관계의 주인이 된다. 양쪽을 서로 참조하도록 개발한다. 일대다[1:N] 일대다 단방향 테이블 일대다 관계는 ..
JPA - DB에 JSON 및 List값 넣기
·
Back-End/JPA
0. 해당 기능을 사용하게 된 배경 DB에 3개의 공통된 값을 가지는 17개의 리스트형 데이터를 받아서 넣어줘야 할 일이 생겼는데, 이를 해결하기 위해서는 3개 + α(Id, 생성시간 등)의 컬럼을 가지는 17개의 엔티티를 생성 하던가, 51가지 + α(Id, 생성시간 등) 의 컬럼을 가지는 하나의 테이블을 생성하여야 했는데, 이를 컨트롤 하기에는 DB에 부담이 너무 많이 갈 것으로 판단하여, 데이터를 한 컬럼에 JSON 형태로 넣기로 결정하였습니다. 1. 환경 및 라이브러리 설치 해당 포스팅은 MariaDB를 사용한 환경이며 라이브러리를 설치하기 전에 사용하는 DB와 맞는 hibernate 버전을 설치해주시면 됩니다. https://github.com/vladmihalcea/hypersistence-u..
JPA 활용 - 엔티티 매핑 대신 DTO를 사용하는 이유
·
Back-End/JPA
엔티티를 Request Body에 직접 매핑하는 경우 import jpabook.jpashop.domain.Member; import jpabook.jpashop.service.MemberService; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; @RestContro..
JPA 활용 - 상품 주문, 주문 목록 검색과 취소 만들기
·
Back-End/JPA
이전글 2023.03.01 - [Back-End/JPA] - JPA 활용 - 변경 감지와 병합 JPA 활용 - 변경 감지와 병합 이전글 2023.02.28 - [Back-End/JPA] - JPA 활용 - 홈 화면과 회원등록 화면 계층 생성 scoring.tistory.com 상품 주문 상품 주문 컨트롤러 생성 package jpabook.jpashop.controller; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.service.ItemService; import jpabook.jpashop.service.MemberService; import jpabook.jpa..
스프링 시큐리티(2) - 사용자 정의 보안 기능 구현과 form 인증
·
Back-End/Spring Security
2023.02.26 - [Back-End/Spring Security] - 스프링 시큐리티(1) - 프로젝트 구성 및 의존성 추가 스프링 시큐리티(1) - 프로젝트 구성 및 의존성 추가 프로젝트 생성 이번 시큐리티를 학습하기 위해서 프로젝트를 생성 합니다. 자바 버전 - 11 의존성 - 스프링 부트 웹 프로젝트를 생성 한 후, 컨트롤러를 하나 생성해 줍니다. package io.security.basicsec scoring.tistory.com 인증 API - 사용자 정의 보안 기능 구현 WebSecurityConfigurerAdapter : 시큐리티의 기능 초기화 작업과 설정을 담당하는 클래스 HttpSecurity : 세부적인 보안 기능을 설정할 수 있는 API를 제공해준다. 이번 장에서는 Secur..
JPA 활용 - 변경 감지와 병합
·
Back-End/JPA
이전글 2023.02.28 - [Back-End/JPA] - JPA 활용 - 홈 화면과 회원등록 화면 계층 생성
JPA 활용 - 홈 화면과 회원등록 화면 계층 생성
·
Back-End/JPA
이전 글 2023.02.27 - [Back-End/JPA] - JPA활용 - 주문 검색 기능 개발(동적쿼리 사용) hr { margin: 30px 0; } /* Main marketing message and sign up button */ .jumbotron { text-align: center; border-bottom: 1px solid #e5e5e5; } .jumbotron .btn { font-size: 21px; padding: 14px 24px; } /* Supporting marketing content */ .marketing { margin: 40px 0; } .marketing p + h4 { margin-top: 28px; } /* Responsive: Portrait tablets..