spring (26) 썸네일형 리스트형 @Query 어노테이션 Query Method 방법메소드명으로 쿼리 생성@Query 사용JPQL(Java Persistence Query Language)을 사용하여 Query를 생성 JPQL (Java Persistence Query Language)객체지향 쿼리, DB 테이블이 아닌 엔티티 객체를 조회JPA 일부에 정의되어 있으며, DB 종류(Oracle, MySQL, PostgreSQL, ...)에 영향을 받지 않고 작성할 수 있는 장점이 있음 위치기반 (indexed) 쿼리 파라미터?1 ≫ 첫 번째 파라미터인 emailAddress의 값이 전달됨만약 파라미터가 (String emailAddress, String name) 식이었다면?1은 emailAddress / ?2는 name을 전달하게 됨 명명된 (named) 쿼리.. 페이징 / 정렬 처리 PaginationDataset을 더 작고 관리하기 쉬운 Chunk로 나누는 기술server가 client의 요청에 전체 dataset을 응답하는 것이 아닌, 나눠진 dataset을 응답지금 보고 있는 페이지에 표시할 데이터만 데이터베이스에서 가져오게 됨 Pagination이 필요한 이유성능전체 데이터 대신 필요한 데이터만 빠르게 응답할 수 있음수십만 개의 데이터를 한 번에 응답한다면 → 리소스는 많이 사용, 클라이언트에서의 응답은 느림더 나은 UX사용자에게는 반응이 빠른 인터페이스 제공초기 결과를 빠르게 볼 수 있고 추가 데이터를 요청할 수 있게 됨 PagingAndSortingRepository전체 문서들을 개별 페이지로 나누는 Pagination과 정렬하는 Sorting을 사용할 수 있게 됨데이터 .. Spring Data JPA 이용하기 1. 데이터베이스 연동하기 (JPA)환경 설정 build.gradle 파일에 Spring Data JPA 라이브러리 추가implementation 'org.springframework.boot:spring-boot-starter-data-jpa'runtimeOnly 'mysql:mysql-connector-java'resources/application.properties 파일에 데이터베이스 접속 정보와 JPA 설정 추가spring.datasource.url=jdbc:mysql://localhost:3306/boardspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.username=usernamespring.data.. 영속성 컨텍스트 영속성 컨텍스트엔티티를 영구 저장하는 환경애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 역할 수행엔티티 매니저 (Entity Manager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리서비스에는 하나의 엔티티 매니저 팩토리 (Entity Manager Factory)가 존재하며 엔티티 매니저 팩토리에서 데이터베이스에 접근하는 트랜잭션이 생길 때마다 엔티티 매니저를 생성하여 영속성 컨텍스트에 접근 엔티티 생명주기비영속 (New/Transient)엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태영속 (Managed)엔티티 매니저를 통해서 엔티티가 영속성 컨텍스트에 저장된 상태영속성 컨텍스트에 의해 관리되는 상태준영속 .. JPA / Hibernate / Spring Data JPA JPAJava Persistence Api자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스인터페이스이기 때문에 Hibernate나 EclipseLink 등으로 JPA를 구현! 하이버네이트 (Hibernate)JPA 인터페이스 명세를 구현한 구현체 중 하나하이버네이트가 가장 널리 사용되고 있는 구현체EclipseLink나 OpenJPA 등 다른 구현체를 선택해서도 사용 가능 Spring Data JPASpring에서 JPA를 편리하게 사용할 수 있게 지원하는 라이브러리CRUD 인터페이스 제공repository 개발 시 인터페이스만 작성하면 실행 시점에 객체를 동적으로 생성해서 주입데이터 접근 계층 개발 시 인터페이스만 작성하면 됨!Hibernate에서 자주 사용되는 기능을 보다 .. ORM Object Relational Mapping (객체-관계-매핑)어플리케이션 객체와 관계형 데이터베이스의 데이터를 매핑해주는 도구객체 지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용대표적인 ORM : Hibernate, JPA 등 ORM 사용 이유객체 모델과 관계형 모델 간의 불일치 존재객체 지향 프로그래밍의 클래스 / 관계형 데이터베이스의 테이블데이터베이스 접근을 프로그래밍 언어의 관점에서 접근!ORM을 이용해서 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치 해결 ORM의 장점직관적인 코드로 데이터를 조작할 수 있음개발자가 비즈니스 로직에 집중할 수 있음부수적인 코드가 줄어들어 단순해지고 가독성 상승재사용 및 유지보수 편리ORM은 독립적으로 작성되어 있기 때문에 객체들.. JdbcTemplate JDBC API를 사용했을 때 불편한 부분반복되는 코드연결부터 자원의 반납까지 모든 부분의 관리 필요예외처리로 인해서 코드 복잡도 상승 JdbcTemplateSpring에서 개발자가 JDBC를 쉽게 사용할 수 있도록 도와주는 클래스JDBC 코어 패키지의 중앙 클래스JDBC와 같은 라이브러리로 사용 가능implementation 'org.springframework.boot:spring-boot-starter-jdbc' JdbcTemplate을 사용하면 해결되는 부분구조적인 반복 해결손쉬운 Transaction 처리쉽게 자바 객체로 매핑 가능 구조적인 반복 해결JDBC API를 사용할 때 요청 시 다음 과정이 진행됨try-catch 문 생성Connection 획득 / 종료Statement 준비 / 실행 /.. JDBC 서버와 DB의 연결 DB 교체가 발생한다면?데이터베이스마다 커넥션 연결 방법과 SQL 전달 방법, 결과 응답을 받는 방법이 모두 다름이러한 방식은 데이터베이스 변경에 매우 취약하다는 문제가 있음이러한 방식을 해결할 수 있는 것 ≫ 자바 표준 JDBC JDBCJava Database Connectivity자바에서 DB 프로그래밍을 하기 위해 사용되는 API (표준 인터페이스)데이터베이스에 맞는 JDBC 드라이버를 사용 JDBC 표준 인터페이스3가지 기능을 표준 인터페이스로 정의하여 제공인터페이스를 구현하여 제공하는 라이브러리 = JDBC Driver(Oracle DB에 접근할 수 있는 라이브러리 = Oracle JDBC Driver) ** JDBC 이용하기!환경 설정build.gradle 파일에 JDBC.. 이전 1 2 3 4 다음