본문 바로가기

분류 전체보기

(333)
유효한 팰린드롬 보호되어 있는 글입니다.
[JPA] 값 타입 목차기본값 타입임베디드 타입(복합 값 타입) 값 타입과 불변 객체값 타입의 비교값 타입 컬렉션   JPA의 데이터 타입 분류 JPA는 데이터 타입을 최상위 레벨로 보면 2가지로 분류할 수 있다. 엔티티 타입@Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적 불가예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체  값 타입 분류값 타입에는 3가지로 분류할 수 있다.기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 임베디드 ..
회문 문자열 보호되어 있는 글입니다.
[JPA] 프록시와 연관관계 관리 목차프록시즉시 로딩과 지연 로딩지연 로딩 활용영속성 전이: CASCADE고아 객체: orphanRemoval영속성 전이 + 고아 객체, 생명주기  프록시Member를 조회할 때 Team도 함께 조회해야 할까?Member를 조회할 때 Team도 데이터베이스에서 함께 조회해야 할까?// 회원과 팀 함께 출력public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.g..
특정 문자 뒤집기 보호되어 있는 글입니다.
단어 뒤집기 보호되어 있는 글입니다.
[JPA] 상속관계 매핑 목차상속관계 매핑조인 전략단일 테이블 전략구현 클래스마다 테이블 전략@MappedSuperclass  상속관계 매핑관계형 데이터베이스는 상속 관계 X  슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑   슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법각각 테이블로 변환 => 조인 전략 통합 테이블로 변환 => 단일 테이블 전략 서브타입 테이블로 변환 => 구현 클래스마다 테이블 전략  주요 어노테이션@Inheritance(strategy=InheritanceType.XXX)  JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @D..
문장 속 단어 보호되어 있는 글입니다.
[JPA] 다양한 연관관계 목차연관관계 매핑시 고려사항 3가지다대일 [N:1]일대다 [1:N]일대일 [1:1]다대다 [N:M] 연관관계 매핑시 고려사항 3가지다중성단방향, 양방향연관관계의 주인 다중성다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany(실무에서는 X) 단방향, 양방향 테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없음객체참조용 필드가 있는 쪽으로만 참조 가능한쪽만 참조하면 단방향양쪽이 서로 참조하면 양방향(단방향 2개)  연관관계의 주인테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래 키를 관리할 곳을 지정해야함연관관계의 주인: ..
[JPA] 연관관계 매핑 목차연관관계가 필요한 이유단방향 연관관계객체와 테이블이 관계를 맺는 차이연관관계의 주인(Owner)양방향 매핑시 가장 많이 하는 실수 연관관계가 필요한 이유예제 시나리오회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. 객체를 테이블에 맞추어 모델링 예시 1. 연관관계가 없는 객체 2. 참조 대신에 외래 키를 그대로 사용@Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; … ..