
Paging 페이징은 말그대로 Page화 하는 것이다. 조회 결과가 매우 많은 경우 일정한 크기를 갖는 페이지로 조회 목록을 쪼개는 것이다. 따라서 채팅, 검색 결과 등 조회 결과가 매우 많은 곳에서 유용하게 사용될 수 있다. 이러한 기능을 Spring Data Jpa에서 Pageable이라는 이름으로 제공하고 있다. 페이지 조건을 줄 때는 주로 Size, Page, Sort 3가지 값을 필요로 한다. Size는 Page의 개수를 의미한다. 즉 100개의 목록이 있을 때 size가 9라면 12개의 페이지가 생성되고 마지막 페이지에는 1개의 목록만이 있게 된다. Page는 생성된 페이지를 접근할 때 사용하는 인덱스이다. 0번부터 시작한다. Sort는 페이지를 자르기 전에 먼저 목록을 정렬하고 자를 수 있는..

레포지토리 기본적으로 데이터를 DB에 저장하기 위해서 레포지토리 클래스가 존재한다. 직접 데이터베이스에 CRUD를 하는 계층이다. 다만, JPA를 사용하지 않았을 경우 직접 쿼리도 작성해야하고, 매개변수도 받아줘야 하는 불편함이 존재한다. JPA를 사용하지 않는 경우 레포지토리 @Repository public class BookRepo { @PersistenceContext EntityManager em; public void save(Book book) { em.persist(book); } public Book findByName(String name) { return em.createQuery("select b from Book b where b.name = :name", Book.class) ...

연관관계 매핑 객체와 관계형 데이터베이스 테이블을 서로 매핑하는 것 연관관계를 매핑할 때 생각해야할 3가지가 존재한다. 방향 : 단방향, 양방향 (객체 간의 참조) 다중성 : 일대일, 일대다, 다대일, 다대다 연관관계의 주인 : 양방향일 때 연관관계에서 관리의 주체가 되는 곳 단방향, 양방향 데이터베이스에서 테이블들은 외래키 하나를 가지로 양 쪽 테이블 조인이 가능하다. 따라서 DB에서는 단방향이니 양방향이니 나눌 필요가 없다. 하지만 객체는 참조용 필드가 있는 객체만이 다른 객체를 참조하는 것이 가능하다. 따라서 두객체 사이에 하나의 참조용 필드만을 가지고 참고하게 되면 단방향 관계이고, 두 객체 모두가 참조용 필드를 갖고 참조하면 양방향 관계가 된다. 정확히 말하면 단방향 관계 하나만 가지냐 or 단..
JPA는 앞에서 말했듯이 객체와 DB를 연결해주는 ORM이다. 따라서 객체와 DB에 저장될 테이블간의 연결을 제대로 해주는것이 가장 중요하다. 이때 매핑을 위해 사용되는 것들이 애노테이션이다. 객체와 테이블 매핑 @Entity @Table 기본 키 매핑 @Id 필드와 컬럼 매핑 @Column @GeneratedValue @Enumerated 연관관계 매핑 @OneToOne @OneToMany @ManyToOne @ManyToMany (있긴하지만 사용을 지양해야한다.) 몇가지 더 있지만 대표적인 애노테이션들부터 정리해보겠다. 아래 Member Entity를 생각하며 읽어보자. @Entity @Getter @Builder @NoArgsConstructor @AllArgsConstructor @Table(na..

JPA란? Jpa는 Java Persistence API 의 약자로 자바 영속성 API를 말한다. JDBC를 이용해서 데이터 베이스를 관리하는 인터페이스이고 이를 구현한 구현체로 대표적인것이 HIbernate이다. 자바 ORM 기술의 표준 API 이다. (Object Relational Mapping) Q. 그렇다면 Spring은 왜 JPA를 만들었을까? 과거에는 SQL 쿼리 중심적인 프로그래밍을 해왔었다. 이러한 방식에는 두가지 문제점이 존재했는데 1. SQL에 의존적인 프로그래밍 2. SQL과 객체사이의 패러다임 불일치 문제가 존재했다. 이를 해결하기 위해 등장했다. 예1) 엔티티 객체가 있고 이를 CRUD들을 하는 쿼리들이 여러개 있다고 하자. 이때 객체의 프로퍼티가 추가되거나 삭제되었다고 하면 각..
- Total
- Today
- Yesterday