전체 글 44

spring boot JWT 실습(1)

build.gradle에 library 추가 SpringSecurity 및 Jwt 관련 라이브러리를 build.gradle에 추가한다. implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt:0.9.1' JwtTokenProvider 생성 Jwt 토큰 생성 및 유효성 검증을 하는 컴포넌트. Jwt는 알고리즘과 비밀키를 가지고 토큰을 생성하게 된다. 이때 Claim 정보에는 토큰을 부가적으로 실어 정보를 세팅할 수 있다. Claim 정보에 회원을 구분할 수 있는 값을 세팅하였다가 토큰이 들어오면 해당 값으로 회원을 구분하여 리소스를 제공하면 된다. 그리고 Jwt 토큰에는..

java spring 2021.07.31

Spring boot Exception 처리

Cotroller를 사용하다보면 예외처리를 반복적으로 수행해야 할 때가 있다. 예를 들어, IllegalArgumentException일 경우, 400으로 응답 알 수 없는 Exception의 경우 500(INTERNAL_SERVER_ERROR)를 발생시키거나 @GetMapping("/api/v1/members") public ResponseEntity getAllMember(Pageable pageable) { Page memberPage; // 반복적으로 발생하는 Try-Catch try { memberPage = memberFindService.getAllMemberPage(pageable); } catch (RuntimeException re) { return ResponseEntity.badRe..

java spring 2021.07.30

DAO, DTO, Service

DAO(Data Access Object) DB를 사용해 데이터를 조회하거나 조작하는 기능을 담당하는 것들을 DAO라고 부른다. domain logic (비즈니스 로직이나 DB와 관련없는 코드들)을 persistence mechnism과 분리하기 위해 사용한다. - persistence mechnism: Database에 data를 CRUD(Create, Read, Update, Drop)하는 계층 DAO를 만들지 안흥면 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver를 로드하고 Connection 객체를 생성하게 되면 엄청 많은 커넥션이 발생하게 되기 때문이다. Spring에서 DAO는 @Repository annotation으로 정의한다. DTO(Data Transfer Objec..

java spring 2021.07.29

git 명령어 정리하기(Window 버젼)(계속 업데이트 예정)

Github, Git, Window cmd창 사용 ● Github에서 프로젝트 가져오기 1. 먼저 깃허브에서 불러올 프로젝트의 주소를 복사해온다. 2. 명령 프롬프트창(cmd) 오픈 3. 프로젝트를 복사해놓을 폴더로 이동 cd 폴더경로 4. git clone 명령어를 통해 프로젝트 복사해오기 git clone 깃허브에서 복사해온 경로 ex) git clone https://github.com/ ● 해당 폴더 안의 디렉터리 출력 dir ● 프로젝트안에 변경된 파일 확인 git status 프로젝트 안의 파일 변경사항 무시하고 파일을 원래 상태로 복귀시키기 git checkout -- 파일이름 ● Github에 프로젝트, 프로젝트 변경사항 올리기 1-1. commit하기 위해 staging area에 특정 ..

Git 2021.07.14

데이터베이스(회복과 병행제어2)

병행 수행 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 개의 트랜잭션을 동시에 수행하는 것을 의미한다. 여러 트랜잭션이 차례로 번갈아 수행되는 인터리빙 방식으로 수행됨 병행 제어 병행 수행 시 같은 데이터에 접근하여 연산을 실행해도 문제가 발생하지 않고 정확한 수행 결과를 얻을 수 있도록 트랜잭션의 수행을 제어하는 것을 의미한다. 병행 수행 시 발생할 수 있는 문제점 ● 갱신 분실 하나의 트랜잭션이 수행한 데이터 변경 연산의 결과를 다른 트랜잭션이 덮어써 변경 연산이 무효화되는 것 여러 트랜잭션이 동시에 수행되더라도 갱신 분실 문제가 발생하지 않고 마치 트랜잭션들을 순차적으로 수행하는 것과 같은 결과 값을 얻을 수 있어야 한다. ● 모순성 하나의 트랜잭션이 여러 개 데이터 변경 연산을 실행..

데이터베이스 2021.05.29

데이터베이스(회복과 병행 제어)

트랜잭션 - 하나의 작업을 수행하는데 필요한 데이터베이스 연산들을 모아놓은 것 - 작업 수행에 필요한 SQL 문들의 모임 - 논리적인 작업의 단위 - 장애 발생 시 복구작업이나 병행 제어 작업을 위한 중요한 단위로 사용됨 트랜잭션의 특성 ● 원자성 트랜잭션의 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 하는 all-or-nothing 방식을 의미 만약 트랜잭션 수행 중 장애가 발생한다면 지금까지 실행한 연산 처리를 모두 취소하고, 데이터베이스를 트랜잭셩 작업 전 상태로 되돌려야 한다. ● 일관성 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야 함을 의미 ● 격리성 수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없음을 의미 여러 트..

데이터베이스 2021.05.29

데이터베이스 정규화 총정리

정규화란 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정 함수적 종속성을 판단하여 정규화를 수행 (함수적 종속성: 속성들 간의 관련성) 이상현상이란? 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용 - 삽입 이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 - 갱신 이상: 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 - 삭제 이상: 투플을 삭제하면 꼭 필요한 데이터까지 삭제되는 데이터 손실의 문제 정규형(NF: Normal Form) 릴레이션이 정규화된 정도 각 정규향마다 제약조건이 존재하고, 릴레이션의 특성을 고려해서 적합한 정규형을 ..

데이터베이스 2021.05.21

데이터베이스 언어 SQL-3

JOIN - LEFT JOIN SELECT 고객.고객아이디, 고객.고객이름, 주문.배송지 FROM 고객 LEFT OUETR JOIN 주문 ON 고객.고객아이디 = 주문.주문고객 - RIGHT JOIN SELECT 제품.제품번호, 제품.제품명, 주문.주문고객 FROM 주문 RIGHT OUETR JOIN 제품 ON 제품.제품번호 = 주문.주문제품 MySQL 내장 함수 함수 설명 ABS(숫자) 숫자의 절댓값을 계산 ABS(-4.5) => 4.5 CEIL(숫자) 숫자보다 크거나 같은 최소의 정수 CEIL(4.1) => 5 FLOOR(숫자) 숫자보다 작거나 같은 최소의 정수 FLOOR(4.1) => 4 ROUNG(숫자, m) 숫자의 반올림, m은 반올림 기준 자릿수 LOG(n, 숫자) 숫자의 자연로그 값을 반환 ..

카테고리 없음 2021.04.19

데이터베이스 언어 SQL-2

● 데이터 검색 : SELECT 문 > 그룹별 검색 SELECT [ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트 [ WHERE 조건 ] [ GROUP BY 속성_리스트 [ HAVING 조건 ] ] [ ORDER BY 속성_리스트 [ ASC | DESC ] ]; > 부속 질의문을 이용한 검색 : SELECT 문 안에 또 다른 SELECT 문을 포함하는 질의, 부속 질의문을 먼저 수행하고, 그 결과를 이용해 상위 질의문을 수행 EX) SELECT 제품명, 단가 FROM 제품 WHERE 제조업체 = ( SELECT 제조업체 FROM 제품 WHERE 제품명 = '달콤비스킷'); 연산자 설명 IN 부속 질의문의 결과 값 중 일치하는 것이 있으면 검색 조건이 참 NOT IN 부속 질의문의 결과 ..

데이터베이스 2021.04.19

데이터베이스 언어 SQL

● SQL(Structured Query Language) 관계 데이터베이스를 위한 표준 질의어, 비절차적 데이터 언어 사용방식 - 대화식 SQL : 데이터베이스 관리 시스템에 직접 접근해 질의를 작성하여 실행 - 삽입 SQL : 프로그래밍 언어로 작성된 응용 프로그램에 삽입 ● SQL의 분류 - 데이터 정의어(DDL) : 테이블을 생성하고 변경,제거하는 기능을 제공 - 데이터 조작어(DML) : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공 - 데이터 제어어(DCL) : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공 ● SQL의 데이터 정의 기능 테이블 생성 : CREATE TABLE 문 CREATE TABLE..

데이터베이스 2021.04.19