객체 지향 언어 - 자바, 스칼라, ...관계형 데이터 베이스 - 오라클, MySQL, ...Insert into ...updateselectdelete자바 객체를 sql로sql을 자바 객체로SQL에 의존적인 개발을 피하기 어렵다.두 패러다임이 맞지 않다.객체 지향 프
Java Persistence API자바 진영의 ORM 기술 표준Object-relational mapping(객체 관계 매핑)객체는 객체대로관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑대중적인 언어에는 대부분 ORM 기술이 존재EJ
http://www.h2database.com/h2/bin/h2.sh최고의 실습용 DB가볍다.웹용 쿼리툴 제공MySQL, Oracle 데이터베이스 시뮬레이션 기능시퀀스, AUTO INCREMENT 기능 지원https://maven.apache.org/
JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기영속성 컨텍스트웹 어플리케이션을 개발한다면, 엔티티 매니저 팩토리를 통해서 고객에게 요청이 올때마다 엔티티 매니저를 생성한다.엔티티 매니저는 데이터 커넥션을 사용해서 DB를 사용하게 된다.JPA를 이해하는데
엔티티 매핑 소개 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리. JPA를 사용해서
객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.여기서 책 추천을 한다.객체지향의 사실과 오해(조영호)오브젝트(조영호)중요한 말은 우리가 JPA를 배우고 있지만, 결국 핵심은 객체지향적 설계이다.객체지향이라는 근본적인 것이 어렵다. 이를 위해 위
다중성단방향, 양방향주인다대일, 일대다, 일대일, 다대다@ManyToOne, @OneToMany, @OneToOne, @ManyToMany다대다는 실무에서 쓰면안된다. 그 이유는 뒤에서테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없음객체참조용 필드가 있는
관계형 데이터베이스는 상속 관계X슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사상속 관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑조인 전략단일 테이블 전략구현 클래스마다 테이블 전략@Inheritance기본값이 SINGLE_TABLE
공통 매핑 정보가 필요할 때 사용(id, name)공통적으로 쓰는 속성이 많을때 공통 부분만 부모로 따로 만들어서 속성만 가져와 사용하는 것이다.공통 속성(BaseEntity)를 만들어두고, 상속받기만 하면 된다.아무튼 공통적으로 쓰는거는 @MappedSuperclas
em.find() vs em.getReference()em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회em.find()의 경우 메서드가 실행되는 시점에 바로 DB에
Team을 가져와야 하나?지연로딩 (LAZY)를 하게 되면, Team을 프록시로 가져온다.프록시를 사용하지 않고 즉시 다 가져옴즉시로딩(EAGER) 사용시, Member 조회할때 항상 Team도 조회실무에서는 지연 로딩(LAZY)만 사용즉시 로딩을 사용하면 전혀 예상하
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장@OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST)영속성 전이는 연관관계를 매
기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는