본문 바로가기
관리자

분류 전체보기

(1002)
[패턴][TIL] HashSet으로 자바 List String 중복검사, equals, hashCode Override List 내부 모든 항목 중복 검사를 위한 패턴과 비교 List의 원소 내부에 공통으로 중복되는 필드값이 있는 경우 에러를 반환해야되는 상황을 생각해보자. 아래 코드와 같이 SchoolDto가 level과 code가 모두 같은 경우 에러를 던져야한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 public class SchoolService { public void checkOverrode()..
[JPA기본] 7. 상속관계 매핑 1. 상속관계 매핑 전략 엔티티 계층화와 테이블 생성 전략 상속관계 매핑은 아래 그림과 같이 두 엔티티 사이에 공통적인 속성이 있는 경우 엔티티를 상속관계로 만들어서 공통화하고, 독립적인 속성만 각 엔티티의 속성으로 두는 경우에 필요하다. 원래는 테이블의 스키마를 기준으로 엔티티를 생성하지만, 만약 이러한 계층화된 엔티티를 기준으로 테이블을 생성한다면, 3가지의 생성 전략을 적용할 수 있다. 1) 단일 테이블 전략(Single Table) : 1개 테이블에 모든 필드값 넣기 2) 클래스별 테이블 전략(Table per class) : 위 그림의 왼쪽과 같이 중복되는 항목 무시하기 3) 조인 테이블 전략(Joined) : 위 그림의 오른쪽과 같이 중복되는 항목만 따로 테이블화하기 2. 단일 테이블 전략 J..
[비공개] Weekly Report - 21/09/27~21/10/03, 462일차 보호되어 있는 글입니다.
[JPA기본] 6. 양방향 연관관계 1. 양방향 연관관계의 필요성 이전 글에서는 Member 객체에 teamId 대신 Team 객체 자체를 넣는 것이 효율적이고, 이렇게 함으로써 단방향 연관관계를 맺을 수 있다는 것을 배웠다. 그리고 이를 이용하여 특정 Member가 속한 Team을 얻어낼 수 있었다. 테이블은 외래키를 통해 이미 양방향 관계가 있는 것과 같은 구조이다 그런데 만약 특정 Team에 해당하는 Member 들을 조회하고 싶다면? 테이블의 연관 관계에서는 그냥 TEAM 테이블과 MEMBER 테이블을 조인하여, TEAM.TEAM_ID = MEMBER.TEAM_ID인 항목을 MEMBER 테이블에서 조회하면 된다. 이전 글에서 살펴본 것처럼 Member가 소속된 Team을 찾는 경우도 이런 방식으로 하면 된다. 다시 말해, 테이블은 ..
[JPA기본] 5. 기본 키 매핑과 연관관계 매핑 기초 1. 기본 키 매핑 @GeneratedValue - 기본 키 생성 전략 기본키를 매핑하는 @Id 어노테이션과 @GeneratedValue 어노테이션에 대해서 알아본다. id값을 직접 매핑한다면 @Id 어노테이션만 있으면 된다. 그런데 수많은 데이터를 처리하므로 보통 기본 키값인 Id값은 자동으로 생성되도록 하는데, 이것을 해주는 것이 @GeneratedValue 어노테이션이다. @GeneratedValue 어노테이션은 자동 생성을 하는 방식을 strategy 속성으로 지정해줄 수 있다. 이 속성의 value는 다음 4가지로 설정이 가능하다. ex) @GeneratedValue(strategy = GenerationType.IDENTITY) GenerationType.AUTO GenerationType.I..
[비공개] Weekly Report - 21/09/20~21/09/26, 455일차 보호되어 있는 글입니다.
[JPA기본] 4. DDL 자동 생성과 엔티티 매핑 어노테이션 JPA를 잘 사용하기 위해서는 자바 객체인 엔티티와 RDB의 테이블간 매핑을 잘하는 것이 중요하다. 이 내용을 잘 모르면 에러가 발생할 경우가 많아지고 시간을 많이 허비하게 될 수 있다. 1. 데이터베이스 스키마 자동생성 DDL 자동 생성 데이터베이스 스키마 자동생성은 객체에 정의한 정보를 바탕으로 테이블을 만들어주는 기능이다. JPA가 DDL(Data Definition Language, 데이터 베이스의 스키마(테이블명, 열 이름 등)을 만들어주는 SQL문 집합) 을 자동으로 생성해준다. 단순히 생성해주는 것이 아니라, persistence.xml에서 지정한 SQL dialect에 맞는 적절한 DDL을 생성해준다. 예를 들어 String값은 일반적으로 테이블에서는 varchar 타입으로 분류되지만, O..
[JPA기본] 3. 영속성 컨텍스트 - JPA 내부 동작 방식 앞서 객체와 RDB의 상호소통의 가장 기초적인 예제를 살펴보면서 객체와 RDB간 매핑이 중요하다는 것을 간단히 체험해봤다. 이 부분에 대해서는 뒤에서 더 깊게 다루게 된다. 이런 ORM의 구조 외에 가장 중요한 점이 있다면 영속성 컨텍스트 개념이다. JPA가 동작하는 기본 방식으로 이 부분을 잘 이해해야 문제가 생겼을 때 대응을 잘할 수 있다. 1. 영속성 컨텍스트와 엔티티 생명주기 영속성 컨텍스트 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이다. 이전 글에서 살펴본대로 어떤 객체(엔티티)의 값을 저장하기 위해서 persist() 메서드를 쓰는데, 이 경우 객체가 바로 DB로 INSERT 되는 것이 아니라 영속성 컨텍스트에 등록되는 것이다. 아래 도식에서처럼 JPA를 이용하여 어떤 객체를 조회하거나 p..