Back-end (19) 썸네일형 리스트형 [SpringBoot] 롬복(Lombok) 롬복(Lombok) 모델 클래스를 생성할 때 반복적으로 사용하는 getter/setter 같은 메서드를 어노테이션으로 대체하는 기능을 제공하는 라이브러리이다. 장점 어노테이션 기반으로 코드를 자동 생성하므로 생산성이 높아진다. 반복되는 코드를 생략할 수 있어 가독성이 좋아진다. 유지보수에 용이해진다. 단점 코드를 어노테이션이 자동 생성하기 때문에 메서드를 개발자의 의도대로 정확하게 구현하지 못한다. 1. 롬복 설치 pom.xml 파일에 롬복 의존성을 추가해준다. ... org.projectlombok lombok true ... File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors에 Enable annot.. [SpringBoot] DAO 연동을 위한 컨트롤러와 서비스 설계 이전에 설계한 구성 요소들을 클라이언트의 요청과 연결하기 위해 컨트롤러와 서비스를 생성해보자. 먼저 DAO의 메서드를 호출하고 그 외 비즈니스 로직을 수행하는 서비스 레이어를 생성한 후 컨트롤러를 생성하겠다. 1. Dto 패키지 생성 및 ProductDto, ProductResponseDto 생성 data패키지 안에 dto 패키지를 생성하고 그 안에 ProductDto, ProductResponseDto 클래스를 생성해준다. ProductDto는 @Id로 설정한 number를 포함하지 않는 클래스이고 ProductResponseDto는 number를 포함한 클래스이다. // ProductDto package com.springboot.jpa.data.dto; public class ProductDto {.. [SpringBoot] DAO 설계 DAO 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체, 비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행하지만 스프링 데이터 JPA에서 DAO의 개념은 리포지토리가 대체하고 있다. 1. DAO 클래스 생성 DAO 클래스는 일반적으로 인터페이스-구현체 구성으로 생성한다. 서비스 레이어에 DAO 객체를 주입받을 때 인터페이스를 선언하는 방식으로 구성한다. data.dao.impl 구조로 패키지를 생성한 후 dao 패키지와 impl 패키지에 ProductDAO 인터페이스와 ProductDAOImpl 클래스를 생성한다. 2. ProductDAO 인터페이스 아래와 같이 인터페이스 설계를 해준다. public interface ProductDAO { Product insertPro.. [SpringBoot] 엔티티, 리포지토리 인터페이스 설계 엔티티 설계 Spring Data JPA의 엔티티 클래스를 사용하여 데이터베이스에 테이블을 생성해보자. 엔티티에는 데이터베이스에 쓰일 테이블과 컬럼을 정의한다. 상품 테이블 상품 번호 INT 상품 이름 VARCHAR 상품 가격 INT 상품 재고 INT 상품 생성 일자 DateTime 상품 정보 변경 일자 DateTime 1. 엔티티 관련 기본 어노테이션 @Entity: 해당 클래스가 엔티티임을 명시하기 위한 어노테이션. 클래스 자체는 테이블과 일대일로 매칭되며, 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미 @Table: 엔티티 클래스는 자동으로 테이블과 매핑되므로 클래스의 이름과 테이블의 이름을 다르게 지정할 때 사용 @Id: 엔티티 클래스의 필드는 테이블의 칼럼과 매핑된다. 테이블.. [SpringBoot] 데이터 베이스 연동(Maria DB) 필요 라이브러리 Developer Tools: Lombok, Spring Configuration Processor Web: Spring Web SQL: Spring Data JPA, MariaDB Driver 그리고 앞서 설정한 swagger와 log-back을 동일하게 설정해주자. application.properties 파일에 데이터베이스 관련 설정 추가 spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:{설정포트번호, 기본값:3306}/{db이름} spring.datasource.username={사용자이름} spring.datasource.password={사.. [SpringBoot] JPA & 영속성 컨텍스트 JPA 자바 진영의 ORM 기술 표준으로 채택된 인터페이스의 모음. ORM이 큰 개념이라면 JPA는 더 구체화된 스펙을 포함. 동작 메커니즘을 정리한 표준 명세이다. JPA 기반의 구현체는 대표적으로 세 가지가 있는데, 그 중 가장 많이 사용되는 구현체는 하이버네이트이다. 1. 하이버네이트 자바의 ORM 프레임워크로, JPA가 정의하는 인터페이스를 구현하고 있는 JPA 구현체 중 하나이다. 2. Spring Data JPA JPA를 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트 중 하나이다. CRUD 처리에 필요한 인터페이스를 제공하고, 스프링이 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작한다. 영속성 컨텍스트 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하.. [SpringBoot] ORM 1. ORM Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미한다. 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(관계형데이터베이스)의 테이블을 자동으로 매핑하는 방법이다. 클래스는 데이터베이스의 테이블과 매핑하기 위해 생성된 것이 아니기 때문에 RDB테이블과 불일치를 해결하는 역할이 ORM이다. 2. ORM의 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어듦 객체지향적으로 데이터베이스에 접근할 수 있어 코드의 가독성을 높임 재사용 및 유지보수가 편함 ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이 객체들은 각 클래스로 나뉘어 있어 유지보수가 수월 데이터베이스에.. [SpringBoot] 로그백(Logback) 1. 로깅(logging) 애플리케이션이 동작하는 동안 시스템의 상태나 동작 정보를 시간순으로 기록하는 것을 의미한다. 2. Logback log4j 이후에 출시된 로깅 프레임워크로서 slf4j를 기반으로 구현됐으며, 과거에 사용되던 log4j에 비해 월등한 성능을 자랑한다. 또한 스프링 부트의 spring-boot-starter-web 라이브러리 내부에 내장돼 있어 별도의 의존성을 추가하지 않아도 사용할 수 있다. 3. Logback 특징 5개의 로그 레벨(TRACE, DEBUG, INFO, WARN, ERROR)을 설정할 수 있다. ERROR: 로직 수행 중에 시스템에 심각한 문제가 발생해서 애플리케이션의 작동이 불가능한 경우 WARN: 시스템 에러의 원인이 될 수 있는 경고 레벨 INFO: 애플리케.. 이전 1 2 3 다음 목록 더보기