JPA(java persistence API)란? 객체를 데이터베이스에 저장하기 위해서 과거에는 복잡한 JDBC API & SQL문을 직접 작성해야 했다. SQL Mapper (JdbcTemplate, MyBatis 등)의 등장으로 개발 코드는 줄었지만 SQL문은
대부분 객체지향 언어와 함께 관계형 DB를 사용하여 어플리케이션을 개발한다이 말은 즉, 객체를 관계형 DB에 저장하여 관리해야 한다는 의미이다.📌하지만 SQL 중심적 개발로 되는 문제점이 발생한다.무한 반복, 지루한 코드📌객체지향 과 관계형 DB의 패러다임 불일치
Java Persistence API : 자바 진영의 ORM 기술 표준📢ORM이란Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계하고관계형 데이터베이스는 관계형 데이터베이스대로 설계한 뒤ORM 프레임워크가 중간에서 이 둘을 매핑해준
Spring Framework에서 라이브러리 버전 선택할 때, https://spring.io/projects/spring-boot\`현재 Spring Boot 버전👉Reference Doc.👉Dependency Versions(https://do
JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기 (설계와 관련)영속성 컨택스트 (실제 JPA가 내부에서 동작하는지 이해하기)고객의 요청이 들어올 때마다 EntityManagerFactory를 통해 EntityManager를 생성한다.EntityManag
객체와 테이블 매핑: @Entity, @Table필드와 컬럼 매핑: @Column기본 키 매핑: @Id연관관계 매핑: @ManyToOne, @JoinColumn@Entity가 붙은 클래스는 JPA가 관리하고 이를 엔티티라 한다.JPA를 사용해서 테이블과 매핑할 클래스
객체와 테이블 연관관계의 차이를 이해객체의 참조와 테이블의 외래 키를 매핑용어 이해방향(Direction) : 단방향, 양방향다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해연관관계의 주인(Owner) : 객
다중성단방향, 양방향연관관계의 주인JPA가 4가지 어노테이션을 제공해준다다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany이부분이 연관관계의 주인이다(다대일 다중성에서 다인 부분이 연관관계의 주인다.)여기서 말하
객체에는 상속관계가 있지만 관계형 데이터베이스는 상속 관계가 없다관계형 데이터베이스에는 슈퍼타입 서브타입 관계라는 모델링 기법이 그나마 객체 상속과 유사하다.상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다.📌데이터베이스에서 슈퍼타
비즈니스 상황마다 다르지만회원과 팀을 함께 출력하는 printUserAndTeam의 경우 Member, Team을 따로 가져오는 것 보다 한번에 같이 가져오는게 성능상 이득이다회원만 출력하는 printUser의 경우 Team 데이터까지 같이 가져올 필요 없다. (낭비)
✅ 영속성 전이: CASCADE 즉시 로딩, 지연로딩, 연관관계 세팅과 전혀 관계가 없다. > 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속상태로 만들도 싶을 때 사용한다 예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장. 영속성 전이 :
JPA는 최상위의 데이터 타입을 2가지로 분류한다.엔티티 타입@Entity로 정의하는 클래스 객체를 말한다.데이터가 변해도 식별자로 지속해서 추적 가능예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능값 타입int, Integer, String처럼 단순히
JPQL : 표준 문법JPA Criteria, QueryDSL : 자바 코드를 작성해 JPQL을 빌드해주는 Generator Class 모음네이티브 SQL : 표준 SQL 문법을 벗어나는 쿼리를 작성한다JDBC API 직접 사용, MyBatis, SpringJdbcTe
✅JPQL - 경로 표현식