JPA는 (Java Persistence API)의 약자로 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 대표적으로 JPA로 구현한 오픈소스 Hibernate가 있다, 나도 처음에 헷갈렸었는데 JPA와 Spring
JPA 동작원리 앞으로 JPA를 설명하기 위해서는 "영속성 컨텍스트"에 대해 알 필요가 있다고 판단해 글을 작성하려고한다. 영속성 컨텍스트는 간단히 이야기 하면 엔티티를 영구 저장하는 환경 이라고 보면된다. 만약 Spring Data JPA를 사용했다면 EntityM
@Query @Query 어노테이션은 Spring Data JPA에서 지원하는 어노테이션으로 일반 SQL 및 JPQL쿼리를 작성할 수 있게해주는 어노테이션이다. @Query어노테이션을 사용하는 이유는 Spring Data JPA에서 기본적인 CRUD기능은 지원해 주
JpaRepository는 Spring Data JPA에서 지원하는 인터페이스 중에 하나로 데이터베이스의 기본적인 CRUD작업을 지원해준다. JPA는 주로 Hibernate, Eclipse Link를 사용하여entitymanagerfactory, entitymanag
JPA를 사용하기 위해서는 Database 구조와 맵핑된 Entity 들을 먼저 생성해야한다. 그리고 모든 JPA의 동작은 이 Entity들을 기준으로 돌아가게 되는데, 이 때 Entity들을 관리하는 역할을 하는 것이 EntityManager이다. 기술적으로 설명하자
EntityManager EntityManager는 EntityManager (이론) 게시글에서도 설명했지만 EntityManager는 DB와 연관있는 Entity 객체와 영속성 컨텍스트끼리 상호작용하기 위해 만들어진 인터페이스이다. > @Query 어노테이션 게시글
QueryDSL QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다. QueryDSL은 정적타입을 이용하여 SQL과 같은 쿼리를 장성 할 수 있게 해준다. Que
연관관계 현재 서비스되고 있는 웹 어플리케이션중에 테이블을 단일 테이블로 사용하는 서비스는 별로 없을 것이다. 그렇기에 보통은 테이블끼리 연관을 지어서 사용하여 효율성을 높이는 방식을 많이 사용한다. 그래서 MyBatis같은 Mapper는 직접 SQL문을 작성하기 때문
2차 캐시란 2차 캐시는 JPA에 있는 기능중에 하나로 간단히 이야기하면 중복되는 요청이 들어올 시 최초에 들어온 요청은 영속성 컨텍스트에 있는 쿼리문을 실제 DB Table에 실행시켜 값을 가져오지만 2차 캐시를 사용하면 최초의 요청은 DB를 직접 조회하고 똑같은 요
JPA를 사용했다면 무조건 Entity 객체를 만들어봤을 것이다. 그런데 Entity객체를 생성하는데 주의사항이 존재했다. 나 또한 예전에는 내가 사용한 방식이 문제점인지 모르고 사용했었는데 지금은 하나하나 주의하면서 생성하고 있다. 그런 의미에서 Entity객체를 생