JPA 5

스프링 데이터 JPA - 다양한 기능2

JPA Hint & Lock Hint JAP 구현체에게 제공하는 힌트 (SQL 힌트랑 다름) Read Only Hint를 사용하면 영속성 콘텍스트에 저장되는 것을 막고 변경사항이 업데이트되지 않도록 막을 수 있습니다. 말 그대로 읽을 수만 있게 해주는 기능입니다. 실습 Repository에 사용자 이름으로 조회하는 메서드를 추가합니다. @QueryHints(value = @QueryHint(name = "org.hibernate.readOnly",value = "true")) Member findReadOnlyByUsername(String username); @QueryHints 어노테이션을 추가해줌으로써 Hint를 사용할 수 있고 hibernate의 readOnly 속성을 true로 지정해야 합니다...

JPA 2022.07.05

스프링 데이터 JPA - 다양한 기능들

페이징과 정렬 순수 JPA로만 페이징과 정렬을 하고 싶을 때 사용법입니다. public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member m where m.age=:age order by m.username desc",Member.class) .setParameter("age",age) // 파라미터 받아오기 .setFirstResult(offset) // 몇번째부터? .setMaxResults(limit) // 몇명까지? .getResultList(); } public long totalCount(int age) { return em.createQuery("select count(m) ..

JPA 2022.06.26

스프링 데이터 JPA - 다양한 쿼리 기능

스프링 데이터 JPA란? Spring data JPA는 Spring Framework에서 JPA를 편리하게 사용할 수 있게 지원해주는 프로젝트입니다. Spring Data JPA는 공통 인터페이스를 적용시키기만 해도 내부에서 자동으로 구현체를 생성해줍니다. 공통 인터페이스 적용 public interface MemberRepository extends JpaRepository { ... } 인터페이스를 생성한 후 JpaRepository 인터페이스를 상속받는다. JpaRepository 인터페이스는 공통 CRUD를 제공한다. 쿼리 메소드 기능 메소드 이름으로 쿼리 생성 List findByMemberGreaterThan(String username, int age); 스프링 데이터 JPA는 메소드 이름을..

JPA 2022.06.21

JPA 영속성 컨텍스트란?

JPA를 공부할 때 가장 중요한 게 ORM과 영속성 컨텍스트를 이해하는 것이다. 영속성 컨텍스트를 제대로 이해하고 JPA를 써보도록 하자. 영속성 컨텍스트란? 영속성 컨텍스트는 엔티티를 저장하고 관리하는 가상의 데이터베이스 같은 개념이다. 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 엔티티의 생명주기 영속 (managed) 영속성 컨텍스트에 저장된 상태이고 엔티티가 영속성 컨텍스트에 의해 관리된다. @Authwired private EntityManager entityManager; // 비영속 상태 Member member = createMember("1", "회원1"); // 영속 상태 entityManager.persist(member); 비영속 (new/transient) ..

JPA 2022.06.15

JPA를 사용해야 하는 이유

관계형 데이터베이스가 웹 서비스의 중심이 되다 보니 현업 프로젝트들은 대부분 애플리케이션 코드보다 SQL로 처리하는 게 많아졌습니다. 이 부분을 해결하고자 JPA가 나오게 되었습니다. JPA란? JAVA에서 사용하는 ORM 기술 표준으로 사용되는 인터페이스이다. ORM (Object Relational Mapping)은 객체와 관계형 데이터베이스를 매핑해준다는 뜻으로서, 객체는 객체대로 RDB(Relational Database)는 RDB대로 설계하도록 도와주는 프레임워크이다. 쉽게 말해 ORM 프레임워크는 객체와 RDB 사이 중간 다리 역할을 해주는 것이다. 동작 과정 1. JPA로 회원 객체를 넘겨준다. 2. JPA는 회원 객체를 분석하고 insert sql을 생성해준다. 3. JDBC API를 이용..

JPA 2022.06.14