Back-end
-
[JPA] 값 타입Back-end/JPA 2022. 4. 28. 10:15
📌 JPA의 데이터 타입 분류 (2가지) 1) 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 공유가 가능하다. ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 2) 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적이 불가하다. 공유되면 안되는 값이다. (복사해서 사용, 불변 객체로 생성) 생명 주기를 엔티티에 의존한다. ex) 숫자 100을 200으로 변경하며 완전히 다른 값으로 대체 📌 값 타입 분류 (3가지) 기본값 타입, 임베디드 타입, 컬렉션 값 타입 총 3가지로 분류된다. 📌 기본값 타입 종류: 자바 기본 타입(int, double), 래퍼 ..
-
[JPA] 프록시와 연관관계 관리Back-end/JPA 2022. 4. 28. 00:12
📌 프록시 프록시 개념은 Hibernate에 구현되어 있는 것이다. JPA 인터페이스의 구현체로 Hibernate를 사용하기 때문에 프록시를 사용할 수 있는 것이다. EntityManager의 find() : 데이터베이스를 통해 실제 엔티티 객체를 조회 EntityManager의 getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 ▶️ 프록시가 필요한 예시 상황 위와 같은 구조로 설계가 되어있을 때 'Member를 조회할 때 Team도 함께 조회해야 할까?' 라는 의문에서 프록시는 사용되게 되었다. Member의 필드만 조회해야 하는 경우에는 Team을 조인해서 가져오지 않아도 되기 때문이다. ▶️ 프록시의 특징1 실제 클래스를 상속 받아서 만들어진다. 실제 클래스와..
-
[JPA] 상속관계 매핑과 @MappedSuperclassBack-end/JPA 2022. 4. 27. 00:00
📌 상속관계 매핑 상속관계 매핑이 필요한 이유 관계형 데이터베이스는 상속 관계가 없다. 데이터베이스의 슈퍼타입 서브타입 관계 모델링 기법이 객체의 상속과 유사하다. 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이 필요하다. 데이터베이스의 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 슈퍼타입과 서브타입을 각각의 테이블로 변환 → 조인 전략 통합 테이블(서브타입에 있는 모든 컬럼을 슈퍼타입에 하나로 통합)로 변환 → 단일 테이블 전략 서브타입 테이블로 변환(서브타입 컬럼에 슈퍼타입에 있는 모든 속성을 포함하도록 구성) → 구현 클래스마다 테이블 생성 전략 📌 객체 관점 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) ..
-
[SpringBatch] 적용 예시, 구성 방안 간단 정리Back-end/TIL 2022. 4. 26. 09:31
스타트업 백엔드 인턴 업무 중 필요했던 스프링 배치에 대해 알게된 내용을 정리하는 글 입니다. 📌 배치 작업 적용 예시 예시1) 회원 탈퇴 상황 - 회원 탈퇴를 클릭했는데, 해당 회원과 관련된 데이터를 모두 삭제하려면 시간이 오래 걸리고, 삭제하면 안되는 데이터가 존재할 수 있기 때문에 회원 탈퇴 요청을 했을 때 주로 flag로 처리만 해두고 실제 데이터를 삭제하지는 않는다. 처리 - 정해진 날짜 이후에 배치로 자동 삭제되도록 한다. 예시2) 회원가입용 주민등록증 사본, 사업자등록증 사본 삭제 상황 - 회원가입 시 사용자가 등록한 위의 2가지 사진은 승인 후 바로 삭제하지 않고(사용자가 데이터 변경 요청을 할 수 있으니까) AWS S3에 저장해둔다. 처리 - 정해진 날짜 이후에 배치로 자동 삭제되도록 한..