Spring
-
[Transaction] 트랜잭션 정리 - 1Spring/Study 2023. 6. 16. 15:55
본 정리는 Spring Boot와 연관지어 정리한 것입니다. 1. Transaction 1-1. 사전적 의미 트랜잭션의 사전적 의미는 "거래"이다. A가 B에게 송금하고, B는 A에게 입금을 받는다. 이 행위를 통틀어서 거래라고 한다. 1-2. 개념 커밋 Commit A의 송금과 B의 입금 두 행위 모두 성공하게 된다면? 데이터 베이스에 정보를 저장한다. 데이터베이스에 저장(반영)하는 것을 커밋(Commit) 이라고 한다. 롤백 Rollback 만약 A의 송금은 성공했는데, B의 입금 행위는 실패한다면? 커밋을 하면 안되고 A의 송금 행동을 되돌려야 할 것이다. 이 되돌리는 것을 롤백(Rollback) 이라고 한다. 1-3.트랜잭션 ACID 트랜잭션은 ACID라고 하는 Atomicity, Consiste..
-
[DBCP] 데이터베이스 커넥션 풀 간단 정리: Database Connection PoolSpring/Study 2023. 6. 14. 16:35
본 정리는 Spring Boot와 관련지어 정리한 내용이다. Database Connection Pool Database Connection Pool이 필요한 경우? 유저가 특정 서비스를 요청했을 때, 서비스가 서버에서 DB에 접근을 해서 처리를 해야 하는 서비스라면? 서버는 DB에 연결을 하기위해 TCP/IP 연결을 수행한다. 이때 3-way 핸드셰이크도 수행하게 될 것이다. 그렇게 되면 데이터 베이스에서 SQL을 실행시키는 시간 + 연결 시간이 소요된다. 매번 연결하는 시간이 진행된다면 매우 비효율적이기 때문에 서버와 DB간의 커넥션을 미리 저장 해놓는 공간이 데이터베이스 커넥션 풀이다. 어떻게 동작하는가? 서버가 시작하는 시점에 기본적으로 설정된 커넥션을 미리 확보해서 서버가 보관해둔다. Sprin..
-
[Spring Boot] @RestController와 @ContollerSpring/Study 2023. 5. 26. 21:20
서론 Spring Boot에서 중요한 컨트롤러를 구현할 때 사용되는 두 가지 어노테이션 @RestController와 @Controller에 대하여 간략히 정리하겠다. @Controller @Controller 어노테이션은 해당 클래스가 컨트롤러의 역할을 하도록 스프링에게 알려주는 역할을 한다. 이를 통해 프런트컨트롤러 (Dispatcher Servlet)가 해당 클래스를 사용하여 요청을 처리하며, 일반적으로 뷰에 대한 정보를 전달하는 용도로 사용된다. 메소드에 @ResponseBody 어노테이션이 없다면, 값을 리턴할 때 문자열로 리턴되어 View의 이름으로 매칭되어 실행된다. @RestController @RestController는 @Controller와 @ResponseBody 어노테이션의 조합버..
-
[Spring Boot] 브라우저 강제 종료시 소켓 연결 끊기Spring/Trouble Shooting 2023. 5. 16. 18:24
브라우저 강제 종료하면 소켓 해제는? 문제 상황 웹 소켓을 통한 채팅 서비스 구현중 클라이언트가 브라우저를 강제 종료를 해도 소켓 연결 해제가 정상적으로 이뤄지지 않았다. 문제 요인 클라이언트 측에서 소켓의 Disconnect 요청을 보내오지 않았기 때문에 서버에서는 당연히 연결 되어 있음으로 판단하고, 연결을 유지했다. 정확히는 Disconnect를 보내오면 채팅방의 인원수가 줄어들면서 클라이언트가 연결을 종료했다고 로직을 작성했는데, Disconnect 요청이 안오니 채팅방 인원수가 그대로 유지되었다. 문제 해결 소켓의 연결 상태를 기록했다. 서버 측에서 클라이언트의 Disconnect 요청을 기다리지만은 않고, 스스로 판단할 수 있도록 했다. 1번 기록 public class Session { @I..