🌱 Spring

본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 즉시로딩 vs 지연 로딩 회원을 저장하고 조회해오는 간단한 로직이다. 즉시로딩을 사용했을 때와 지연로딩을 사용했을 때의 차이점이 무엇일까? Member member = new Member(); member.setUsername("member"); em.persist(member); // 저장 em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); // 조회 tx.commit(); 지연로딩 @Entity public class Member extends BaseEntity { ... @ManyToOn..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 프록시 JPA를 사용하면 객체 그래프를 통해 연관관계를 탐색할 수 있다는 장점이 있다. 그런데 엔티티들은 데이터베이스에 저장되어 있기 때문에 하나의 객체를 조회할 때 그와 연관되어 있는 엔티티들을 모두 조회하는 것보다는 필요한 연관관계만 조회해 오는 것이 효과적일 것이다. 예를 들어 Member와 Team이 있을 때, Member 조회 시 항상 Team의 정보도 함께 조회해야 할까? 실제 필요한 비즈니스 로직에 따라 다르다. Member와 Team을 거의 항상 같이 사용하는 경우 Member와 Team을 거의 같이 사용하지 않고, Member만 출력하는 경우가 많으며 Team은 정말 어쩌다..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 상속관계 매핑 관계형 데이터베이스에는 상속 관계가 존재하지 않는다. 관계형 데이터베이스의 슈퍼타입 서브타입 관계라는 모델링 기법이 객체에서의 상속과 유사하다. 따라서 상속 관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입-서브타입 관계를 매핑하는 것이다. 슈퍼타입-서브타입 논리모델을 실제 물리 모델로 구현하는 방법으로 3가지 방법이 있다. 조인 전략 단일 테이블 전략 구현 클래스마다 테이블 전략 조인 전략 : JOINED 가장 정규화된 방법이다. 장점 테이블 정규화 외래 키 참조 무결성 제약 조건 활용 가능 저장공간 효율화 단점 조회시 조인을 많이 사용하므로 성능 저하 조회 쿼리가 복잡 데..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 연관관계 매핑시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽에 조인이 가능하다. 테이블은 사실 방향이라는 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조가 가능하다. 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 → 하지만 사실 이 양방향도 2개의 단방향이 있는 것이다. 연관관계 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺지만, 객체의 양방향 관계는 A → B, B → A 처럼 2군데에 참조를 가진다. 따라서 둘 중 테이블의 외래 ..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 양방향 매핑 @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "user_name") private String username; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity public class Team { @Id @GeneratedValue @Column(name = "team_id") private Long id; private String name; @One..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편)을 강의를 바탕으로 공부하고 정리한 글입니다. 연관 관계 X @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "user_name") private String username; @Column(name = "team_id") private Long teamId; } @Entity public class Team { @Id @GeneratedValue @Column(name = "team_id") private Long id; private String name; } 참조 대신에 외래 키를 그대..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 데이터베이스 스키마 자동 생성 JPA는 객체 매핑만 해놓으면 애플리케이션 실행 시점에 필요 시 테이블을 모두 생성해준다. DDL을 애플리케이션 실행 시점에 자동으로 생성 테이블 중심 → 객체 중심 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL을 생성 이렇게 생성된 DDL은 개발 장비에서만 사용 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용한다. 스키마 속성 옵션 설명 create 기존 테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료 시점에 테이블 DROP update 변경분만 반영 (운영 DB에..
본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다. 엔티티 매핑하기 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 기본 키 매핑 @Id 직접 할당 @GeneratedValue 자동 생성 IDENTITY • 데이터베이스에 위임 • MYSQL에서 사용 SEQUENCE • 데이터베이스 시퀀스 오브젝트 사용 • ORACLE에서 사용 • @SequenceGenerator 필요 TABLE • 키 생성용 테이블 사용 • 모든 DB에서 사용 • @TableGenerator 필요 AUTO • 방언에 따라 자동 지정 • 기본값 IDE..
an2z
'🌱 Spring' 카테고리의 글 목록 (3 Page)