본문 바로가기
반응형

분류 전체보기714

트랜잭션의 역사 개요 스프링에서 당연하게 사용해오는 기술인 @Transactional의 역사를 알아보겠습니다. 스프링에서 트랜잭션의 사용 방법 및 스프링의 추상화 전략을 살펴보면서 개발자가 핵심 개발에만 집중 할 수 있게 된 배경을 알아보겠습니다.. 본 글은 김영한 님의 강의를 바탕으로 작성했습니다 데이터베이스 세션 데이터베이스에서 커넥션을 얻기 위해서 데이터베이스 서버는 내부에서 세션을 이용합니다. 세션은 트랜잭션을 시작하고 커밋 또는 롤백을 통해서 트랜잭션을 종료합니다. 즉, 개발자가 SQL을 전달하면, 커넥션에 연결되어 있는 세션이 SQL을 실행합니다. 트랜잭션이 없는 롤백 롤백은 취소, 복구와도 같은 의미로 롤백이 발생하는 원인은 다양하며, 보통 예외가 발생했을 때 롤백 처리를 합니다. 비지니스 로직을 짜면서 데.. 2022. 9. 4.
TIL_2022.09.02 1. Facts(사실, 객관) - 피해보상 이미지 로딩 추가 - 김영한님 DataSource & Connection pool 글 마무리 2. Feelings(느낌, 주관) 업무를 계속 하다보니 이제 다른 곳에서 참고할 코드를 가져와서 내 환경에 맞게 변경하는 작업이 많이 쉬워졌습니다. 좋은 점은 일의 능률이 올라갔다는 점이고, 안좋은 점은 스스로 노력을 들여서 짜는 것이 아니라 여기저기서 가져온 코드로 작동시키는 것 같은 느낌도 듭니다. 최소한 어떤 식으로 동작을 하는지, 어떻게 짰는지 이해하도록 노력해야겠습니다. 또한 DB관련 강의를 들으면서, 스프링에서 트랜잭션을 사용하기 위해, 데이터베이스를 사용하기 위해 얼마나 많은 노력을 했는지 알 수 있었습니다. 추상화 기술을 통해 개발자들이 비지니스 로직에만.. 2022. 9. 2.
TIL_2022.09.01 1. Facts(사실, 객관) - 독서 - 채용지원자 조회 마스킹 및 개별 조회 처리, 로그 추가 - DB 강의 듣고 정리 2. Feelings(느낌, 주관) 기록하는 습관을 가지면서 일을 하니 훨씬 능률이 오르고 객관적으로 시간 사용 내용이 파악되는 것을 느꼈습니다. 출퇴근시간도 귀한시간이라는 깨달음이 있어 책을 읽는데 할애하고 있습니다. 하루종일 사무적 업무도 처리하고 채용지원자 관련 보안 감사에서 지적당한 부분도 개선했습니다. 내가 뭘한거지? 남는게 뭐지? 라는 생각이 들 수 있는 하루였는데 시간을 정리하고 보니 시간대별로 작업한 내용이 있고, 시간을 알차게 썼다는 것을 확인했습니다. 이전에 HikariCP, Jdbc, DataSource 등을 정리한 적이 있습니다. 그런데, 여러가지 글을 번역하고.. 2022. 9. 2.
Connection Pool & DataSource 개요 기존에 커넥션을 얻기 위해 JDBC 구현체를 DriverManager로 찾던 전통적인 방법의 한계점과 대안을 알아보겠습니다. Connection Pool과 DataSource 중심 코드의 구성과 성능 개선을 확인해보겠습니다 전통적 Jdbc DriverManger의 문제점 기존 DriverManager는 커넥션이 필요할 때마다 새롭게 생성하고 작업이 끝나면 해제하는 작업을 반복했습니다. 커넥션을 연결하고 종료하는 작업이 가볍지 않기 때문에 매 요청마다 커넥션을 만드는 것은 리소스가 많이 필요하고 시간이 걸리는 작업이라는 한계가 있었습니다. 그래서 커넥션 풀이라는 기술이 등장했습니다. 커넥션 풀(Connection pool) 커넥션 풀이란, 미리 커넥션을 풀에 담아두어서 커넥션이 필요할때마다 꺼내어주는.. 2022. 9. 2.
JDBC 의 역사 개요 JDBC의 역사를 알아보겠습니다. 일반적인 애플리케이션 - DB 사용법 아래 그림처럼, 애플리케이션 서버는 총 3가지 과정으로 DB와 연동하여 원하는 데이터를 조회, 추가, 수정, 삭제 등을 합니다. 첫째로 TCP/IP 커넥션 연결, 두번째로 SQL 전달, 세번째로 결과 응답입니다. 문제점 1. DB 종류에 따라 데이터베이스 사용 코드가 달라집니다.(MySQL, Oracle 등등) 2. 개발자는 직접 커넥션 연결, SQL 전달, 결과 응답 코드 작성을 데이터베이스마다 학습해야 합니다. JDBC 표준 인터페이스 JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API입니다. JDBC는 데이터베이스에서 자료를 쿼리 하거나 업데이트하는 방법을 제공합니다 - 나무위키 JDBC 표준 인터페이스 .. 2022. 9. 1.
TIL_ 2022.08.31 1. Facts(사실, 객관) - 독서 - 집중고객 개선 - redis 공부 2. Feelings(느낌, 주관) 할 일이 아닌 한 일을 기록하라라는 책을 읽고 다시한번 기록의 중요성을 깨달았습니다. 또한 집중고객 개발 건이 추가 요청사항에 계속 들어오면서 추가수정이 이루어지고 있습니다. 현업분이 생각보다 스마트하게 일처리를 하는 분이 아니여서 조율하는데 조금 어려움이 있었습니다. 요건사항에 대해 [오늘 그만보기] 버튼을 추가해서 직원들이 계속 집중고객 팝업이 뜨는 것을 방지하는 쪽으로 했습니다. 3. Findings (배운 점) - redis도 트랜잭션을 사용해 동시성 문제를 해결할 수 있다. redis는 Lock을 사용하면 변경이 1번만 가능하다. 4. Action (구체적 계획) - redis tra.. 2022. 9. 1.
@Controller @RestContrller @Controller, @RestController Spring MVC에서 @RestContrller 어노테이션은 @Controller에 @ResponseBody가 추가된 형태입니다. 스프링 4.0 버전에 등장했으며, RESTful 웹 서비스를 개발하기 위해서 만들어졌습니다. 일반적인 웹 어플리케이션은 HTML + CSS + JavaScript의 조합으로 화면을 구성하지만, REST API는 JSON 혹은 XML 형태로 데이터를 반환합니다. @Controller의 역할은 Map 형태의 모델 객체를 만들고 뷰를 찾는 것이고, @RestController는 단순하게 객체를 반환하고, 객체 데이터는 직접적으로 JSON 혹은 XML 형태로 HTTP 응답에 직접 기록됩니다. Controller는 적절한 view를.. 2022. 8. 25.
@Controller, @Service, @Repository 차이 개요 스프링을 사용하면서 아마 가장 처음 접했던 것이 @Controller, @Service, @Repository였다. 이 어노테이션들을 무의식적으로 사용했는데, 각 차이점은 있을까? 있다면 어떤 것일까? 알아보도록 해보겠습니다. @Component @Controller, @Service, @Repository의 공통점, 차이점을 비교하기 이전에 먼저 @Component를 알아야 합니다. 스프링은 과거 XML에만 빈 정의가 가능했지만, 스프링 2.5버전부터는 어노테이션을 이용한 의존성 주입이 가능해졌습니다. @Component 가 사용된 클래스들은 스프링 빈으로 등록되고 자동으로 빈 탐색의 대상입니다 @Controller, @Service, @Repository 공통점은 @Controller, @Ser.. 2022. 8. 25.
DB의 인덱스와 B-tree, B+tree 개요 DB의 인덱스 개념이 궁금해 정리했습니다. MySql은 인덱스의 구조도 같이 찾았습니다. 인덱스는 B-tree, B+tree 2가지 구현방식이 있으며, 결론적으로 B+tree 방식이 사용됩니다. 각 특징은 무엇이고 차이점은 무엇인지 확인해 봅시다. 학습 목표 B-tree와 B+tree의 특징을 알 수 있다 MySql에서 왜 B+tree가 사용되는지 알 수 있다 B-tree 이진트리는 일반적으로 하나의 노드에 하나의 값, 최대 2개의 자식으로 구성되어 있습니다. 하지만 B-tree는 하나의 노드에 여러 개의 값을 가질 수 있고 최대 자식이 2개 이상 일 수 있습니다 아래 사진처럼, B-tree는 3개의 값, 4개의 자식이 있을 수 있습니다. 하나의 노드의 최대 자식수가 3개이면 3차 B-tree, 4.. 2022. 8. 24.
반응형