전체글 138

스프링 부트 핵심가이드 TIL - 7장 (연관관계매핑)

✍학습 키워드연관관계매핑RDBMS를 사용할때엔 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능하다. 주로 조인을 사용하는데, JPA에서도 연관관계를 표현할 수 있다.One To One: 일대일(1:1)One To Many: 일대다(1:N)Many To One: 다대일(N:1)Many To Many: 다대다(N:M) 등이 있다.⇒ 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관계의 상태가 달라진다.영속성 전이 (데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성)영속성 전이(cascade)란 특정 엔티티의 영속성 상태를 변경할 때 그 엔티티와 연관된 엔티티의 영속성에도 영향을 미쳐 영속성 상태를 변경하는 것을 의미한다.📝새로 배운 개념단방향: 두 엔티..

스프링 부트 핵심가이드 TIL - 6장 (Spring Data JPA 활용하기)

✍학습 키워드 Spring Data JPA 활용하기 JPQL JPQL은 JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다. JPQL의 문법은 SQL과 매우 비슷하다. SQL과의 차이점은 테이블이나 칼럼의 이름을 사용하는 것이 아니라 엔티티 객체를 대상으로 수행하는 쿼리이기 때문에 매핑된 엔티티의 이름과 필드의 이름을 사용한다. @Query 어노테이션 사용하기 데이터베이스에서 값을 가져올 때는 JPA와 같이 메서드의 이름만으로 쿼리 메서드를 생성 할 수도 있고 @Query 어노테이션을 사용해 직접 JPQL을 사용할 수도 있다. JPQL을 사용하면 JPA 구현체에서 자동으로 쿼리 문장을 해석하고 실행하게 됩니다. 주로 튜닝된 쿼리를 사용하고자 할때 직접 SQL을 작성한다..

스프링 부트 핵심가이드 TIL - 5장 (테스트 코드 작성하기)

✍학습 키워드 테스트 코드 작성하기 테스트 코드란? 우리가 작성한 코드나 비즈니스 로직 자체를 테스트하기 위해 작성한 코드를 의미한다. 테스트 코드를 작성하는 이유 → 개발 과정에서 문제를 미리 발견할 수 있다. Given-When-Then 패턴으로 테스트 코드를 작성 할 수 있다. 리포지토리 객체의 테스트 리포지토리는 개발자가 구현하는 레이어 중에서 가장 데이터베이스와 가깝다. findById(), save()등의 기본 메서드에 대한 테스트는 의미가 없다. (검증 되었기 때문에) 때문에 db를 연동한 테스트는 테스트 데이터를 제거하는 코드까지 포함해서 작성하는 것이 좋다. 📝새로 배운 개념 JUnit을 활용한 테스트 코드 작성 JUnit은 어노테이션 기반의 테스트 방식을 지원하는 대표적인 테스트 프레임..

스프링 부트 핵심가이드 TIL - 4장 (ORM)

✍학습 키워드 정의 ORM은 Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미한다. 자바와 RDB의 테이블을 자동으로 매핑하는 방법이다. ORM은 큰 개념이고 JPA는 더 구체화된 스펙을 포함한다. 하이버네이트 자바의 ORM 프레임워크이다. 영속성 컨텍스트 영속성 컨테스트는 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행한다. DAO설계 DAO(Data Access Object)는 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체이다. JPA에서 DAO의 개념은 리포지토리가 대체하고 있다. 규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 데이터베이스에 접근해서 구현하기도 하지만, D..

스프링 부트 핵심가이드 TIL - 3장 (기본 API 개발)

✍학습 키워드 정의 HTTP 메서드에 해당하는 API를 개발하고 필요한 내용 찾기 외부의 요청을 받아 응답하는 기능을 구현해서 컨트롤러 구성 알아보기. 컨트롤러 및 관련 어노테이션 학습 GET(리소스 조회) / POST(리소스 저장) / PUT(리소스 값 업데이트) / DELETE(리소스 삭제) 📝새로 배운 개념 @RequestMapping 별다른 설정 없이 해당 어노테이션을 선언하면 HTTP의 모든 요청을 받는다. 어노테이션의 method 요소의 값을 RequestMethod.GET으로 설정하면 요청을 GET으로만 받는 @PathVariable을 활용한 GET 메서드 구현 실무에서는 매개변수를 받지 않는 메서드가 거의 안쓰임 (데이터를 주고받기 때문에) URL에 값을 담아 요청을 보낸다(GET 방식) ..

스프링 부트 핵심가이드 TIL - 2장 (개발에 앞서 알면 좋은 기초 지식)

✍학습 키워드 정의 개발에 앞서 알면 좋은 기초 지식 주의 비즈니스 로직은 도메인 계층에서 담당하는 것이 일반적이다 스프링에서 JPA를 사용하면 @Entity를 정의한 클래스가 도메인 객체가 되며, 이곳에서 비즈니스 로직을 설계함 좋다. 서비스 레이어에서 비즈니스 로직을 담당하는 경우도 있으므로 잘 설계해야 한다. 📝새로 배운 개념 MSA 서버간 통신은 한 서버가 다른 서버에 통신을 요청하는 것을 의미한다 주로 HTTP 통신을 사용한다 3-Tier-Architecture 레이어드 아키텍처란 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 묶어 수평적으로 구성한 구조를 의미한다.(AOP 같은 너낌) 3 계층 아키텍쳐는 이렇게 이루어진다 프레젠테이션 계층(컨트롤러, 뷰) 애플리케이션의 최상단 계층으로, 클라..

스프링 부트 핵심가이드 TIL - 1장 (스프링부트란?)

본 내용은 스프링 부트 핵심 가이드 - 장정우 저 의 책을 읽으며 학습한 내용을 바탕으로 쓰여졌음을 알려드립니다. ✍학습 키워드 정의 스프링부트란 무엇인가? 기존 스프링 프레임워크는 기존 개발 방식의 문제와 한계를 극복하기 위해 다양한 기능을 제공한다. 하지만 기능이 많은 만큼 설정이 복잡한 편이여서, 이 문제를 해결하기 위해 등장한 것이 스프링 부트이다. (별도의 복잡한 설정을 안해도 개발이 쉬워진다) 스프링 부트는 스프링 프레임워크의 기능을 사용하기 위한 자동 설정을 지원한다. (라이브러리를 실행하는 데 필요한 환경 설정을 알아서 찾아준다.) 내장 WAS인 tomcat이 내장되어 있어 특별한 설정 없이도 톰캣을 실행 할 수 있다.

57. SpringBoot - SpringSecurity

1. Spring Security 1. Spring Security란? 스프링 시큐리티는 스프링 기반 어플리케이션의 보안(인증(로그인))과 권한(사용자의 권한에 대한 처리), 인가(권한에 따른 사용분리) 등)을 담당하는 스프링 하위 프레임워크. 서블릿 필터와 필터체인을 등록해서 인증, 권한, 인가에 대한 위임모델을 구성. 3.버전까지는 필터체인을 체이닝기법으로 구성했지만 3.1.0버전부터는 필터체인을 람다식을 이용한 함수형으로 구현한다. HttpSecurity 객체를 이용하여 구성하게 된다. 보안과 관련된 체계적인 옵션들을 제공해주기 때문에 개발자가 직접 보안관련 로직을 작성하지 않아도 되는 장점이 있다.2. Spring Security의 용어 접근주체(Principal): 보호된 리소스(어플리케이션)에..

56. SpringBoot - JPA

1. JPA 1. JPA란 1. JPA(Java Persistence API)의 약자로 Java에서 사용하는 ORM(Object Relational Mapping) 프레임워크 종류의 하나 2. Java 객체로 RDB(Relational DataBase) 테이블간의 관계를 표현 3. Hibernate, OpenJPA를 사용하여 인터페이스를 구현 2. JPA 사용하는 용어들 1. Persistence(영속성): 개발자들이 개발한 어플리케이션이 종료되도 계속적으로 저장되어 있는 데이터(DB 테이블에 저장되어 있는 데이터) 2. 영속성 컨텍스트: 어플리케이션과 데이터베이스 사이의 엔티티와 영속성의 괴리를 해소하는 기능과 객체를 보관하는 기능을 제공. 엔티티 객체가 영속성 컨텍스트에 들어오는 순간 JPA는 엔티티..

55. SpringBoot - SpringBoot란?

1. Spring Boot 1. Spring Boot란 1. SpringFramework 기반으로 tomcat이 내장되어 있으며 다양한 라이브러리 및 어노테이션이 추가된 프레임워크.(@RestController, @Configuration, @Mapper, @Bean, ...) 2. Spring Boot의 특징 1. tomcat이 내장되어 있어 별도의 tomcat 설치가 필요없다. 2. Spring Framework 프로젝트의 배포는 WAS에서 읽을 수 있는 WAR 파일로 만들어서 배포를 진행했는데 Spring Boot 프로젝트는 JDK에서 바로 실행할 수 있는 JAR 파일로 만들어서 배포 3. Spring Boot Starter 패키지를 제공해서 빠른 라이브러리 의존성을 설정할 수 있다. 4. Spri..