3. 트랜잭션 이해1. 트랜잭션DB에서의 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻하는데 예를 들어 A의 5000원을 B에게 계좌이체를 한다고 하면 A의 잔고를 5000원 감소하고 B의 잔고를 5000원 증가해야하는 것과 같이 고려해야할 점이 많다. 계좌이체는 이렇게 2가지 작업이 합쳐져 하나의 작업처럼 동작을 해야한다. 만약 A의 잔고 감소에 성공했는데 B의 잔고를 증가시키지 못했다면 계좌이체는 실패하고 A 잔고만 감소하는 문제가 생긴다. 트랜잭션을 사용하게 되면 감소와 증가를 둘 다 함께 성공해야 저장하고 하나라도 실패하면 거래 전 상태로 되돌아갈 수 있다. 모든 작업에 성공하여 DB에 정상 반영하는 것을 커밋(Commit)이라고 하고 거래 전으로 되돌리는 것을 롤백(Rollba..
2. 커넥션풀과 데이터소스 이해1. 커넥션 풀 이해데이터베이스 커넥션 매번 획득위 그림은 데이터베이스 커넥션을 획득할 때의 과정인데 꽤나 복잡한 과정을 거친다.1. 애플리케이션 로직은 DB 드라이버를 통하여 커넥션을 조회한다. 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결하는데 3 way handshake 동작이 발생한다.3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW 등 정보를 DB에 전달한다.4. DB는 내부 인증을 완료하고 내부에 DB 세션을 생성한다.5. DB는 커넥션이 생성 완료되었다는 응답을 보낸다.6. DB 드라이버는 커넥션 객체를 생성하여 클라이언트에 반환한다. 커넥션을 만드는 과정은 복잡하기도 하고 시간도 많이 걸린다. 그래서 이런 문제를 해결하기 위해 커넥션을..
1. JDBC 이해1. JDBC 이해JDBC 등장 이유JDBC는 JAVA Database Connectivity로 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이고 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 보통 애플리케이션을 개발할 때에는 중요 데이터를 대부분 데이터 베이스에 보관한다. 클라이언트가 애플리케이션 서버를 통하여 데이터를 저장하거나 조회하면 애플리케이션 서버는 데이터 베이스를 어떻게 사용하느냐 일반적인 사용 방법은 이런 식인데커넥션 연결은 주로 TCP/IP를 사용하여 연결한다.SQL 전달은 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통하여 DB에 전달을 하고결과 응답은 DB가 전달된 SQL을 수행하고 그 결과를 응답하는 것이다. 애플리케이션 서버는 응..
파라미터를 전달하는 방법 중 주로 사용하는 경우는http://xxx.x.x?index=1&page=2http://xxx.x.x/index/1두가지인데 1번은 파라미터의 값과 이름을 함께 전달하는 방식으로 주로 게시판에서 페이지 또는 검색 정보를 함께 전달할 때 사용하고 2번은 Restp api에서 값을 호출할 때 주로 사용한다.spring에서는 이런 전달인자를 처리하는데 2가지 방법을 제시한다.@RequestParam과 @Pathvariable이다.1번은 @RequestParam 어노테이션과 연관이 있는데 url뒤에 붙는 파라미터의 값을 가져올 때 사용한다.단일 파라미터 변환@GetMapping("getDriver")public String viewName(@RequestParam("name")Strin..
IntelliJ 유료 버전에서 templates 에러 뜨는 경우가 있다. 2023-05-29 16:20:11.348 WARN 13900 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) 이런 경우 스프링 부트 스타터 중에 템플릿을 implement 하고 있으나 템플릿이 없는지 확인을 해보아야한다. resources 밑에 templates 디렉터리를 만들고..