JPA 페이징 처리 JPA는 페이징 처리를 위한 메서드를 제공한다. 이 메서드를 통해 페이지를 위한 쿼리를 자동으로 만들어준다. 아래 예제는 JPQL으로 구현하였다. 페이징 쿼리 메서드setFirstResult(int startPosition): 조회 시작 위치(0부터 시작)setMaxResults(int maxResult): 조회할 데이터 수예제PagingMember.java@Entitypublic class PagingMember { @Id @GeneratedValue private Long id; private int age; // getter, setter 생략} PagingMain.java// 엔티티 매니저 생략System.out.println("회원 저장");for(..
@Enumerated이란? Java의 ENUM 타입을 DB로 저장한다. 저장 방법은 두 가지가 있는데, 첫 번째는 ENUM 값의 위치로 저장하는 방법. 두 번째는 ENUM 값을 문자열로 DB에 저장하는 방법이 있다. @Enumerated 사용 시 주의할 점 @Enumerated 사용 시 주의할 점이 있는데 @Enumerated은 기본 값이 EnumType.ORDINAL(ENUM 값의 위치로 저장)이다. 만약 기본 값으로 저장할 때 어떤 문제가 발생하는지 아래 예제를 통해 알아보았다. 문제점 예제Member.java@Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "user_name") ..
벌크 연산이란? 벌크 연산은 쿼리 한 번으로 여러 테이블의 로우를 변경하는 것이다. 즉 대량의 데이터를 수정(update, delete문)과 삭제하는 연산이다. 벌크 연산시 주의할 점? 벌크 연산을 사용할 때는 주의할 점이 있는데 그것은 벌크 연산은 영속성 컨텍스트를 무시하고 DB에 바로 쿼리를 실행하는 것이다. 아래 예제를 통해 무엇이 문제인지 알아보았다. 문제점 예제Book.java@Entitypublic class Book { @Id @GeneratedValue private Long id; private String author; private String bookName; // getter, setter 생략}Main.java// 엔티티 매니저 생력System.o..
준영속 엔티티란? 준영속 엔티티는 영속성 컨텍스트에서 관리하지 않는 엔티티이다. 이러한 준영속 엔티티를 수정하는 방법은 아래 예제를 통해서 알아보았다. 이렇게 준영속 엔티티가 생기는 경우는 등록 후 수정 화면에서 수정 폼을 전송할 때 객체를 통해서 전달 받게 되는데 해당 객체는 이미 DB에 저장 되었던 객체 또는 엔티티이며 식별자가 존재하게 된다. 그러나 영속성 컨텍스트에서는 관리하지 않는다. (단순히 컨트롤러를 통해 전달 받은 객체이기 때문) 1. 변경 감지 기능 사용 준영속 엔티티는 관리하지 않는 엔티티이므로 이 엔티티의 식별자를 추출하여 이를 영속성 컨텍스트에서 관리하는 엔티티로 생성 후 변경 감지 기능을 사용하여 수정할 수 있도록 한다. 예제 아래 예제의 주석은 웹 어플리케이션으로 가정하여 등록 ..
