데이터베이스에 데이터를 관리하려면 SQL을 사용해야 한다. 자바로 작성한 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베이스에 전달한다. 이 과정에서 객체를 데이터베이스에 CRUD하려면 많은 SQL과 JDBC API를 코드로 작성해야 한다. 테이블마다 이런
✔️최초 접속jdbc:h2:~/test✔️이후 접속jdbc:h2:tcp://localhost/~/test✔️JPA 구동 방식엔티티 매니저 팩토리 생성하기JPA를 시작하려면 persistence.xml의 설정 정보를 사용해서 엔티티 매니저 팩토리를 생성해야 한다. 이 때
🙄영속성 컨텍스트1 ✔️엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공간으로 한 개만 만들어서 애플리케이션 전체에서 공유하도록 설계되어 있다. 이 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로
@Entity가 붙은 클래스는 JPA가 관리JPA를 사용해서 테이블과 매핑할 클래스에는 @Entity 어노테이션이 필수기본 생성자 필수(파라미터가 없는 public 혹은 protected 생성자)final 클래스, enum, interface, inner 클래스 사용X
🙄단방향 연관관계 ✔️객체 지향 모델링 연관관계 저장을 위해 참조를 사용하여 연관관계를 조회 ✔️@JoinColumn @JoinColumn은 외래 키를 매핑할 때 사용한다. ✔️@ManyToOne @ManyToOne은 다대일 관계에서 사용한다. 🙄
🙄다대일(N:1) ✔️다대일 단방향 정리 일반적으로 N(다)쪽에서 외래 키를 관리함 연관관계의 주인 : N(다) 회원에서 팀으로의 조회만 가능 이 회원이 어떤 팀에 속해있는지 ✔️다대일 양방향 정리 연관관계의 주인 : N(다) 팀에서 회원으로
✔️슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법각각 테이블로 변환 → 조인 전략통합 테이블로 변환 → 단일 테이블 전략서브타입 테이블로 변환 → 구현 클래스마다 테이블 전략✔️조인 전략(@Inheritance(strategy = InheritanceT
😲프록시 ✔️프록시 JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메서드는 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회한다. 만약 영속성 컨텍스트에 찾는 엔티티가 이미 있으면 EntityMan
✔️엔티티 타입@Entity로 정의한 객체데이터가 변해도 식별자로 지속해서 추적 가능✔️값 타입int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적 불가기본값 타입 / 임베디드 타입 / 컬렉션
JPA를 사용하면 엔티티 객체를 중심으로 개발문제는 검색 쿼리검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색모든 DB 데이터를 엔티티 객체로 변환해서 검색하는 것은 불가능애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요
✔️경로 표현식 → .(점)을 찍어 객체 그래프를 탐색하는 것✔️경로 표현식 용어 정리상태 필드 : 단순히 값을 저장하기 위한 필드연관 필드 : 연관관계를 위한 필드단일 값 연관필드 : @ManyToOne, @OneToOne, 대상이 엔티티컬렉션 값 연관필드 : @On