백엔드 11

서비스의 인증과 권한 부여

보안 용어 이해 인증 (Authentication) 사용자가 누구인지 확인하는 단계 ex) 로그인 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰 (token)을 전달 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근 불가 인가 (Authorization) 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때, 해당 리소스에 접근할 권리가 있는지 확인 ex) 특정 게시판 게시판 접근 등급을 확인해 접근을 허가하거나 거부 접근 주체 (Principal) 애플리케이션 기능을 사용하는 주체 ex) 사용자 또는 디바이스, 시스템 스프링 시큐리티 동작 구조 서블릿 필터 (Servlet Filter) 기반 동작, DispatcherServlet 앞에 필터 배치 필터체인 (FilterChai..

액추에이터 & 서버 간 통신

액추에이터 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링 하고 관리할 수 있는 기능 제공 * JMX (Java Management Extensions) 실행 중인 애플리케이션으 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API JMX를 통해 리소스 관리를 하려면 MBeans(Manage Bean)를 생성해야함 액추에이터 종속성 추가 액추에이터 기능을 사용하려면 애플리케이션에 spring-boot-starter-actuaor 모듈의 종속성을 추가해야함 엔드포인트 애플리케이션의 모니터링을 사용하는 경로 스프링부트는 여러 내장 엔드포인트가 포함돼 있으며, 커스텀 엔드포인트를 추가 할 수 있음 액추에이터를 추가하면 기본적으로 엔드포인트 URI로 /actuator 가 추가되며, 뒤에 경로를 ..

유효성 검사와 예외처리

유효성 검사 데이터를 사전 검증하는 작업 일반적인 애플리케이션 유효성 검사 문제점 계층별로 진행하는 유효성 검사 관리하기 어려움 중복코드 존재 길어지는 검증코드 Hibernate Validator Bean Validation 명세의 구현체로 도메인 모델에서 어노테이션을 통한 필드값 검증을 가능하게 도와줌 스프링 부트에서의 유효성 검사 유효성 검사 라이브러리를 의존성으로 추가하면 사용할 수 있음 spring-boot-starter-validation 유효성 검사는 각 계층으로 데이터가 넘어오는 시점에 해당 데이터에 대한 검사를 실시함 계층간 데이터 전송에 대체로 DTO 객체를 활용하고 있기 때문에 DTO 객체를 대상으로 수행하는 것이 일반적 이외 @Validated 어노테이션과 커스텀 Validation을..

연관관계 매핑

연관관계 매핑 RDBMS를 사용할 때는 각 도메인에 맞는테이블을 설계하고 연관관계를 설정해서 조인(Join) 등 기능을 활용함 JPA를 사용하는 어플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있음 다만, 정확한 연관관계를 표현할 수는 없음 연관관계 매핑 종류와 방향 One To One : 일대일 (1 : 1) One To Many : 일대다 (1 : N) Many To One : 다대일 (N : 1) Many To Many : 다대다 (N : M) 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관계의 상태가 달라짐 JPA를 사용하는 객체지향 모델링에서는 엔티티 간 참조 방향을 설정할 수 있음 비즈니스 로직의 관점에서 봤을 경우 단방향 관계만 설정해도 해결되는 경우가 있음..

Spring Data JPA

JPQL JPA Query Language 의 줄임말로 JPA에서 사용할 수 있는 쿼리 엔티티 객체를 대상으로 수행하는 쿼리 매핑된 엔티티의 이름과 필드의 이름을 사용 쿼리 메서드의 생성 쿼리 메서드는 주제(Subject)와 서술어(Predicate)로 구분 ' find...By ', ' exists...By ' 와 같은 키워드로 쿼리의 주제를 정하며, ' By '는 서술어의 시작을 나타내는 구분자 역할을 함. 서술어 부분은 검색 및 정렬 조건을 지정하는 영역 / 엔티티의 속성으로 정의할 수 있고, AND 나 OR 를 사용해서 조건을 확장하는 것도 가능. // (리턴타입) + {주제 + 서술어(속성)} List findByEmailAndName(String email, String name); 쿼리 메서..

데이터베이스 연동 - 2

ORM ORM은 Object Relational Mapping의 줄임으로 '객체 관계 매핑'을 의미함. 객체와 RDB (Relational DataBase)의 테이블을 자동으로 매핑하는 방법 자바 클래스는 RDB 테이블과 불일치가 존재할 수 밖에 없음. ORM이 불일치와 제약사항을 해결하는 역할을 함 ORM을 사용하면 코드로 데이터를 조작할 수 있음. ORM 장점 데이터베이스 쿼리를 객체지향적으로 조작 할 수 있음 개발 비용 ↓ 가독성 ↑ 재사용 및 유지보수가 편리함 데이터베이스에 대한 종속성이 줄어듦 데이터베이스를 교체하는 상황에서도 비교적 적은 리스크를 부담 ORM 단점 온전한 서비스 구현의 한계 복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성하게 되면 속도 저하 등의 성능 문제가 발생할 수 있음 ..

데이터베이스 연동 - 1

데이터베이스 연동 1. 마리마 DB 설치 > 마리아 DB 설치 홈페이지 Download MariaDB Server - MariaDB.org REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server" mariadb.org 만약 실습하고 있는 DB 버전과 'MariaDB Server Version' 이 맞지 않으면 Display older releases 항목을 체크해 버전을 동일하게 맞춰주는 것이 좋음 이렇게 설정을 한 후 'Download' 버튼을 눌러 파일 다운받음 계속 'Next' 를 클릭해 설치 진행! 마리아 DB 설치 시 서드 파티 도구로 'HeidiSQL' 이 설치 됨. 사용 안한다면 아래 그림과 같이..

스프링 부트 개발하기 / API 작성

스프링 부트 개발하기 프로젝트 생성 인텔리제이 - 프로젝트 생성 스프링 공식 사이트 - 프로젝트 생성 1. 인텔리제이 프로젝트 생성 Name : 프로젝트 이름 설정 Location : 프로젝트 생성할 위치 설정 Language : JVM 상에서 동작하는 언어 선택 Type : 빌드 툴 선택 (Maven 도 사용하지만 Gradle 도 사용하는 추세) Group : 프로젝트를 정의하는 고유 식별자 정보인 그룹 설정 / 정보를 거꾸로 작성 (?) Artifact : 세부 프로젝트를 식별하는 정보 기입 Package name : Group과 Artifact를 설정 시 자동 기입 JDK : JDK 버전 선택 Java : Java 버전 선택 Packaging : 애플리케이션을 쉽게 배포하고 동작하게 하는 패키징 옵..

스프링부트 란? / 기초 지식

스프링 프레임워크란? 자바 기반의 애플리케이션 프레임워크 제어 역전 (IoC) 제어의 역전은 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 의미 객체의 관리를 컨테이너에 맡기는 것이 제어 역전 제어 역전을 통해 의존성 주입 (DI), 관점 지향 프로그래밍 (AOP) 등이 가능해 짐 비즈니스 로직을 작성하는 데 더 집중할 수 있음 의존성 주입 (DI) 제어 역전의 방법 중 하나로 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식 의존성을 주입 받는 방법 생성자 필드 객체 선언 setter 메서드 스프링에서는 @Autowired 라는 어노테이션을 통해 주입할 수 있음 관점 지향 프로그래밍 (AOP) 관점을 기준으로 묶어 개발하는 방식 핵심기능과 부가기능 관점으로 나누어짐 - 핵..

[2주차] 백엔드 커리어 로드맵 - 어떤 백엔드 개발자가 되고 싶은지

- 백엔드 개발자 로드맵 - 어떤 백엔드 개발자가 되고싶은가? 백엔드 개발자 로드맵을 보니 '악!' 소리가 나온다. 컴공 지식이 없는 나로선 살 떨리는 로드맵이다. 하지만 열심히 익히고 배우고 보면 머리속에 뭐라도 남게지라는 생각이 든다. 장애가 없는 사이트를 운영할 수 있는 백엔드 개발자가 되고싶다. (꿈은 크게 가지라고...) 완벽한 프로그램은 없다지만 내가 할 수 있는 최대한의 기량과 기백으로 차근차근(?) 해 나갈 것이다. 우선 기능 많은 깔쌈한 게시판 먼저 만들수 있도록.. 공부를.....