본문 바로가기

부트캠프 개발일기123

51일차: Spring Data JPA(데이터 액세스 계층 구현) ❯ Spring Data JPA 기술 적용 (Spring Data JDBC -> Spring Data JPA) 1. 엔티티 클래스 Spring Data JPA에 맞게 수정(+ @JoinColumn과 mappedBy 차이) Spring Data JDBC에서는 단방향 연관관계만 지원하는 반면 Spring Data JPA는 양방향 연관관계를 지원한다. 따라서 다대일 관계에 일대다 매핑을 추가하여 양방향 연관관계를 만들어주면 양쪽 클래스에서 상호 참조가 가능해진다. 다대다 관계의 경우 @ManyToMany로 바로 적용시키는 것이 아니라, 두 엔티티를 연결하는 엔티티를 통해 연관관계를 매핑할 수 있다. ex. [주문 - 커피] 관계 하나의 커피는 여러개의 주문에 포함될 수 있으며, 하나의 주문은 여러개의 커피를 .. 2023. 4. 25.
50일차: 엔티티간 연관관계 매핑 ❯ 연관관계 매핑 엔티티 클래스간의 관계를 만들어주는것을 연관관계 매핑이라고 한다. 테이블간의 관계를 만들때 외래키를 사용하는것과는 달리 엔티티 클래스간 관계는 객체 참조를 통해 이루어진다. 엔티티간 참조하는 객체 수에 따라 [1 : N], [N : 1], [N : N], [1 : 1] 의 관계로 구분된다. 1. 단방향 연관관계 단방향 관계는 크게 두가지로 구분할 수 있다. -> 일대다 연관관계 Member가 Order를 참조하는 단방향 관계 Member에서는 Order 정보를 얻을 수 있으나 Order 에서는 Member의 정보를 얻을 수 없다. -> 다대일 연관관계 Order가 Member를 참조하는 단방향 관계 Order에서 Member 정보를 얻을 수 있으나 Member 에서는 Order의 정보를.. 2023. 4. 24.
49일차: JPA(Java Persistence API) ❯ JPA(Java Persistence API) 자바에서 객체를 관계형 데이터베이스에 저장, 검색, 업데이트 및 삭제할 수 있는 API를 말한다. Java 인터페이스로 사양이 정의되어있으며 이를 구현한 구현체를 통해 기능을 사용할 수 있다. 대표적인 구현체로는 Hibernate ORM, EclipseLink, OpenJPA, DataNucleus 등이 있다. (그 중 Hibernate ORM을 학습할 예정) ❯ P(Persistence), Persistence Context(영속성 컨텍스트) 사전적으로 영속성, 지속성이라는 의미를 갖는다. 오랫동안 지속된다는 개념이다. JPA에서는 Persistence Context(영속성 컨텍스트)를 통해 엔티티 객체의 영속성을 관리하게 된다. 1. 새로운 엔티티 객.. 2023. 4. 21.
48일차: Pagination(페이지네이션) API Pagination 이란 데이터가 대량으로 있을 때 이를 일정하게 나누어서 페이지에 필요한 만큼만 보여주는 것을 말한다. Spring에서 제공하는 페이지네이션 API를 사용하면 보다 쉽게 구현할 수 있다. 페이지 번호가 page, 한 페이지에 담기는 데이터 개수가 size 인 경우 쿼리문을 이용하면 [SELECT * FROM table명 LIMIT (page-1)*size, size] 혹은 [SELECT * FROM table명 LIMIT size OFFSET (page-1)*size] 등의 구문을 사용해 데이터를 조회해야 한다. 이러한 페이지네이션은 스프링에서 Pageable, PageRequest 를 사용해 적용할 수 있다. Pageable 아래 내용에 표기된것처럼 Pageable 은 페이지네이션을 .. 2023. 4. 20.
47일차: Spring MVC(데이터 액세스 계층) ❯ DDD(Domain Driven Design) 도메인 주도 설계 Domain이란 하나의 비즈니스 업무 영역과 관계된 개념이다. 식당을 예로 들어보자. 주문을 하는 것 / 음식을 만드는 것 / 조리된 음식을 전달하는 것 등 각각의 기능이 하나의 도메인 지식이 되며 이를 구현한 것을 비즈니스 로직이라고 한다. 도메인 주도 설계는 이러한 도메인들을 위주로 진행되는 설계 기법을 의미하는데 여기에서 다음 두 가지 개념이 필요하다. Aggregate(애그리거트): 비슷한 업무 도메인의 묶음을 의미한다. 비즈니스 로직을 캡슐화하는것과 관련이 있다. 식당 예시를 활용해서 설명하면 고객 / 주문 / 메뉴(음식) / 결제 각각이 애그리거트가 될 수 있다. 애그리거트간의 관계는 1 : 1, 1 : N, N : N이 될.. 2023. 4. 19.
46일차: Spring MVC(JDBC, Spring Data JDBC) ❯ JDBC(Java Database Connectivity) JDBC란 자바에서 데이터베이스와 연결하여 데이터를 다루기 위한 API 를 의미한다. 자바에서 제공하는 표준 사양이다. JDBC를 이용해 자바 애플리케이션에서 다양한 DB시스템(Oracle, MySQL, PostgreSQL 등)과 연결할 수 있다. JDBC API는 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 담당한다. 일반적으로 JDBC를 직접 사용하지는 않는다고 한다. Spring Data JDBC, Spring Data JPA 와 같은 데이터 액세스 프레임워크를 사용한다. JDBC 동작 흐름 Java 애플리케이션에서 JDBC API를 이용해 적절한 JDBC 드라이버*를 로딩하고 데이터베이스를 사용하게 된다. *JDBC 드라이버란 데이.. 2023. 4. 18.