Java/JPA

    [JPA] 연관관계 매핑 기초

    [JPA] 연관관계 매핑 기초

    해당 내용은 자바 ORM 표준 JPA 프로그래밍 책을 보고 정리한 내용입니다. 05. 연관관계 매핑 기초 🚩 목표 : 객체의 참조와 테이블의 외래 키를 매핑하는 것 연관관계 매핑을 이해하기 위한 핵심 키워드 방향 | 객체관계에만 존재. 테이블 관계는 항상 양방향이다. 단방향 : 회원 -> 팀 OR 팀 -> 회원 양방향 : 회원 -> 팀 AND 팀 -> 회원 다중성 다대일 (N:1) 일대다 (1:N) 일대일 (1:1) 다대다 (N:N) 연관관계의 주인 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 한다. 5.1 단방향 연관관계 회원과 팀의 관계로 알아보는 다대일 단방향 관계 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. 객체 연관관계 회원 객체는 Memb..

    [JPA] 엔티티 매핑

    👉 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 합니다. @Entity 속성 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정. 보통 기본값인 클래스 이름을 사용함. 만약 다른 패키지에 이름이 같은 엔티티 클래스가 있다면 이름을 지정해서 충돌하지 않도록 한다. 클래스 이름 (예: Member) @Entity 적용 시 주의사항 기본 생성자는 필수다 final 클래스, enum, interface, inner 클래스에서는 사용할 수 없음 저장할 필드에 final을 사용하면 안된다. 👉 @Table - @Table은 엔티티와 매핑할 테이블을 지정한다. - 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다. 속성 기능 기본값 name 매핑..

    [JPA] 영속성 관리

    영속성 관리 ✨ 영속성 컨텍스트(persistence context) 엔티티를 영구 저장하는 환경 em.persist(member); persist() 메소드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. ✨ 엔티티 생명주기 1. 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 - 엔티티 객체를 생성한 상태이며 em.persist() 호출 전 상태이다. - 영속성 컨텍스트나 데이터베이스와는 전혀 관련이 없다. //객체를 생성한 상태 (비영속) Member member = new Member(); member.setId("member1); member.setUsername("회원1); 2. 영속 (managed) : 영속성 컨텍스트에 저장된 상태 - ..

    [JPA] @JoinColumn, @ManyToOne 정리

    [JPA] @JoinColumn, @ManyToOne 정리

    자바 ORM 표준 JPA 프로그래밍 자바 ORM 표준 JPA 프로그래밍 - 교보문고 스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로 www.kyobobook.co.kr @Entity public class Member { @Id @Column(name = "MEMBER_ID") private String id; private String username; @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; //팀의 참조를 보관 public Member2(String id, String username) { th..

    [JPA] @Entity 엔티티 필드와 컬럼 매핑용 어노테이션 정리

    자바 ORM 표준 JPA 프로그래밍 자바 ORM 표준 JPA 프로그래밍 - 교보문고 스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로 www.kyobobook.co.kr 04장 엔티티 매핑 🚩 필드와 컬럼 매핑 분류 매핑 어노테이션 설명 @Column 컬럼을 매핑한다. @Enumerated 자바의 enum 타입을 매핑한다. @Temporal 날짜 타입을 매핑한다. @Lob BLOB, CLOB 타입을 매핑한다. @Transient 특정 필드를 데이터베이스에 매핑하지 않는다. @Access JPA가 엔티티에 접근하는 방식을 지정한다. 🔎 @Column @Column은..

    JPA란? & JPA를 사용하는 이유

    🔎 ORM (Object-Relational Mapping) 프레임워크 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 프레임워크 객체와 관계형 데이터베이스를 매핑한다. 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 사용하여 데이터베이스에 객체를 저장해준다. 🔎 JPA (Java Persistence API) 자바 ORM 기술에 대한 API 표준 명세다. 지루하고 반복적인 CRUD SQL을 알아서 처리해준다. 객체 모델링과 관계형 데이터..