자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법으로, SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근해서 원하는 데이터를 받아올 수 있다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구를 의미한다. SQL을 직접 작
데이터베이스의 테이블과 매핑되는 객체를 의미한다. 객체이기는 하지만, 데이터베이스에 영향을 미치눈 쿼리를 실행하는 객체이다. Entity는 데이터베이스의 테이블 Instance는 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미 attribute는 구성요소로서 더

엔티저를 관리해 데이터베이스와 애플리케이션 사이에서 객체를 생성, 수성, 삭제하는 역할을 하며 이런 엔티티 매니저를 만드는 곳이 엔티티 매니저 팩토리이다. 스프링 부트에서는 엔티티 매니저마다 팩토리를 각각 만드는 것이 아니라, 앤티티 매니저를 하나만 생성해서 관리한다.
JPA는 Java에서 객체-관계 매핑을 위한 표준 명세로 인터페이스인 반면, Spring Data JPA는 JPA 기반 애플리케이션 개발을 보다 쉽게 만들기 위해 JPA 위에 추가적인 기능과 추상화를 제공하는 라이브러리/프레임워크이다. JPA를 사용할 때는 Entity

Base Entity란 데이터의 생성시간, 수정시간, 생성한 사람, 마지막으로 수정한 사람 등을 저장해야할 때 사용자가 직접 생성해내는 데이터들은 중복으로 저장이 필요하게 된다. 모든 엔티티에 매번 컬럼으로 지정하여 코드를 작성하는 것은 번거롭기 때문에 자동화하고 En

값을 생성하는 것인지, 값을 변경하는 것인지 구분하기 어려움setter는 public으로 항상 접근 가능하기 때문에 의도치 않은 곳에서 값이 변경될 수 있다. \-> 생성자를 통해서 entity 값을 설정해야한다 (lombok builder 통해 설정)DB에서 꺼낸 데

JPA의 findById 메서드 리턴 타입인 Optional 클래스는 Java 8에 추가된 새로운 API로 null 처리를 잘 다룰 수 있게 도와준다.'Null일 수도 있는 객체'를 감싸는 일종의 Wrapper 클래스로, 여러 가지 API를 제공하여 null일 수도 있
사용한 쿼리문을 순수하게 가져온 것을 의미, 우리가 사용하는 SQL을 사용할 수 있도록 해준다. BUT 가급적 네이티브 쿼리는 어쩔 수 없는 상황에만 사용하자. 장점 JPA에서 제공하지 않는 정보들을 조회할 수 있다. 성능 문제를 해결할 수 있다. JpaReposito
Java Persistence Query Language엔티티 객체를 조회하는 객체지향 쿼리엔티티와 속성은 대소문자를 구분함 엔티티 이름인 Member, 그리고 Member 속성 name은 대소문자를 구분해주어야함select, from, as 같은 키워드는 구분하지 않
Query Methods Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공함. JPARepository 인터페이스에서 해당 인터페이스와 매핑되어 있는 테이블에 요청하고자하는 SQL을 메서드 이름을 사용하여

Hibernate Query Language의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크로, 정적인 타입을 이용하여 SQL 같은 쿼리를 생성할 수 있게 해줌. 자바의 백엔드는 Spring Boot + Spring Data JPA를 함께 사용하는데, 복잡한 쿼
Java Persistence API: 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스, 즉 명세이며 구현이 없다. Hibernate는 JPA의 구현체이다. JPA를 쓰기 편하게 만든 모듈이다. JPA를 한 단계 추상화시킨 Repositor
엔티티 데이터베이스의 테이블을 객체 지향 프로그래밍 언어에서 사용할 수 있도록 객체로 표현한 것을 의미. 각 엔티티는 데이터베이스 테이블의 한 행(row)를 나타내고, 테이블의 구조를 반영하는 여러 속성 (attribute)을 가진다. 사용목적 데이터베이스의 데이터를

엔티티를 영구 저장하는 환경을 의미한다. 어플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할로, 서버 사이드와 데이터베이스 사이에 엔티티를 저장하는 논리적인 영역이라고 할 수 있다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니
지연 로딩 (Lazy Loading)
Java 내부의 built-in encryption API를 사용하거나 Bouncy Castle 같은 cryptographic 라이브러리 사용컨버터 사용 시 엔티티의 데이터를 변환하여 데이터베이스에 저장이 가능.Hibernate가 제공하는 @ColumnTransfer
JPQL 혹은 native SQL을 사용하는 경우 쿼리문의 타입 안전성을 보장할 수 없다. 컴파일 과정에서 쿼리를 검증할 수 없기 때문에 잘못 작성한 쿼리에 대해서는 런타임 에러로만 문제를 발견할 수 있다. 해법 Criteria API는 쿼리문을 문자열이 아닌 프로그램
페이지네이션은 특정한 정렬기준 + 필요한 개수의 조건에 맞추어 데이터를 가져오는 것을 의미한다. 데이터를 한번에 가져오는 것 (예를 들어 총 데이터값이 100만개가 넘는다면 전부 가져오는 건 성능 부하를 가져온다)보다 데이터를 조금씩 (20~100개씩) 나누어 가져오고
CRUDRepository 와 JPARepository 모두 Spring Data JPA가 제공하는 인터페이스로, 모두 데이터 액세스 계층의 코드를 간결하게 만들기 위해 제공되지만, 제공하는 관계에 차이가 있다. CRUDRepository주요기능: 기본 CRUD 작업을