728x90

Programming 275

Spring - 트랜잭션 이해

- 트랜잭션 - 개념 이해 - 트랜잭션 ACID 1. 트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성 (Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 한다. 1. 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다. 2. 일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정 한 무결성 제약 조건을 항상 만족해야 한다. 3. 격리성: 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데 이터를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준 (Isolatio..

Programming/Spring 2023.06.29

Spring - 커넥션풀과 데이터소스 이해

- 일반적인 커넥션 - 데이터베이스 커넥션을 획득할 때는 다음과 같은 복잡한 과정을 거친다. 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. - 커넥션 풀 - 커넥션을 미리 생성해두고 사용하는 커넥션 풀이라는 방법이 다...

Programming/Spring 2023.06.29

Spring - JDBC 이해

- 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다. 1. 커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결한다. 2. SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다. 3. 결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다. - 여기에는 2가지 큰 문제가 있다. 1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코 드도 함께 변경해야 한다. 2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습 해..

Programming/Spring 2023.06.29

Database - join

- INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. - OUTER JOIN(외부 조인)은 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. - CROSS JOIN(상호 조인)은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다. - SELF JOIN(자체 조인)은 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다. - company1 테이블 - dept 테이블 - LEFT JOIN select * from company1 left join dept on company1.deptcode = dept.deptcode; - INNER JOIN select * from company1 Inne..

Database - SQL 기본

1. SQL 명령어 - SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설꼐된 특수 목적의 프로그래밍 언어다. 1.1 데이터 정의 언어 : DDL - Data Definition Language 1.2 데이터 조작 언어 : DML - Data Manipulation Language 1.3 데이터 제어 언어 : DCL - Data Control Language 2. 데이터 정의 언어 : DDL - 데이터 정의언어는 데이터베이스 구조를 설계하는 SQL 명령을 나타낸다. DDL을 사용하여 데이터베이스 객체를 만들고 수정한다. 2.1 CREATE : DB 객체 생성 2.2 DROP : DB 객체 삭제 2.3 ALTER : DB 객체 ..

Spring - 파일 업로드

- HTML 폼 전송 방식 1. application/x-www-form-urlencoded 2. multipart/form-data - 문자와 바이너리를 동시에 전송하기 위해서 HTTP는 "multipart/form-data"라는 전송 방식을 제공한다. - 방식을 사용하려면 Form 태그에 별도의 enctype="multipart/form-data" 를 지정해야 한다. - 파일을 업로드하기 위해 실제 파일이 저장되는 경로가 필요하다. - application.properties file.dir=파일 업로드 경로 설정(예): /Users/kimyounghan/study/file/ - 주의 1. 꼭 해당 경로에 실제 폴더를 미리 만들어두자. 2. application.properties 에서 설정할 때 마..

Programming/Spring 2023.06.26

Spring - 스프링 타입 컨버터

- HTTP 요청 파라미터는 모두 문자로 처리된다. 따라서 요청 파라미터를 자바에서 다른 타입으로 변환해서 사용하고 싶으면 타입 변환하는 과정을 거쳐야 한다. 1. @RequestParam 2. @ModelAttribute 3. PathVariable - 위 3가지의 경우 스프링이 중간에서 타입을 변환시켜 준다. @GetMapping("/hello-v2") public String helloV2(@RequestParam Integer data) //RequestParam @ModelAttribute UserData data class UserData { Integer data; } //ModelAttribute /users/{userId} @PathVariable("userId") Integer data..

Programming/Spring 2023.06.26

Spring - 예외 처리와 오류 페이지

- 서블릿 예외 처리 - 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. 1. Exception (예외) 2. response.sendError(HTTP 상태 코드, 오류 메시지) - Exception(예외) - 웹 애플리케이션 WAS(여기까지 전파) 컨트롤러 2. WAS(여기까지 전파) 컨트롤러(/error-page/500) -> View - 스프링 부트 - 오류 페이지1 - 지금까지 예외 처리 페이지를 만들기 위해서 다음과 같은 복잡한 과정을 거쳤다. 1. WebServerCustomizer 를 만들고 2. 예외 종류에 따라서 ErrorPage 를 추가하고 3. 예외 처리용 컨트롤러 ErrorPageController 를 만듬 - 스프링 부트는 이런 과정을 모두 기본으로 제공한다. 1. Erro..

Programming/Spring 2023.06.24

Spring - 로그인 처리2 - 필터, 인터셉터

- 서블릿 필터 - 필터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 - 필터는 특정 URL 패턴에 적용할 수 있다. /* 이라고 하면 모든 요청에 필터가 적용된다 - 필터 제한 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 //로그인 사용자 HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) //비 로그인 사용자 - 필터 체인 HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러 - 필터는 체인으로 구성되는데, 중간에 필터를 자유롭게 추가할 수 있다. 예를 들어서 로그를 남기는 필터를 먼저 적용하고, 그 다음에 로그인 여부를 체크하는 필터를 만들 수 있다. - 필터 인터페이스 public i..

Programming/Spring 2023.06.23
728x90