JPQL (Java Persistence Query Language) JPA를 사용하면 엔티티 객체를 중심으로 개발 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색을 해야한다. 하지만 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다. 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. 그래서 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다. SQL과 문법이 유사하고, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN등을 지원한다. JPQL은 엔티티 객체를 대상으로 쿼리를 질의하고 SQL은 데이터베이스 테이블을 대상으로 쿼리를 질의한다. ----------------------------..
일반 CRUD Repository와 다르게 JPA Repository의 차이는 무엇일까? 그리고 JPA Repository 가 제공하는 쿼리 메소드는 일반적으로 우리가 사용하는 쿼리와 어떤 차이가 있는것일까? Working with Spring Data Repositories The goal of the Spring Data repository abstraction is to significantly reduce the amount of boilerplate code required to implement data access layers for various persistence stores. Spring Data Repositories를 사용하는 이유 Spring Data repository abst..
h2 란 무엇일까? document를 살펴보자 http://h2database.com/html/main.html the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; disk-based or in-memory databases Transaction support, multi-version concurrency Browser based Console application 특징을 살펴보면 -> 자바 sql db이며, 빠르고 내장형 인메모리 db이며 브라우저 기반의 콘솔 어플이다. Connection Modes Embedded mode (local connectio..
Entity를 영구 저장하는 환경 엔티티의 생명주기 - 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속 : 영속성 컨텍스트에 관리되는 상태 - 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제 영속성 컨텍스트의 이점 - 1차 캐시 : 영속 컨텍스트에 pk로 지정한 id 값이 엔터티와 함께 key와 value로 저장되어 있다. JPA의 Find~~ 는 모두 영속성 컨텍스트에서 1차 캐시로 엔터티를 갖고오는 것이다. Member member = new Member(); member.setId("member1"); member.setUsername("회원"); // 엔티티 영속 em.persist(member) 단, 1차 캐시는 하나의 트랜잭션 안에서 발생하는 캐시이다. 전체가..