Spring 6

HikariCP - DB ConnectionPool

데이터베이스와 연결된 db connection 객체 미리 만들어 두고 이를 한 곳에 담아 관리하는 것이 connection pool이다.필요할 때마다 커넥션 풀에서 미리 만들어 놓은 커넥션을 찾아 이용하고 반환하는 기법이다. spring boot를 사용하면 가장 많이 볼 수 있는 connection pool 은 hikariCP로 자바로 작성된 경량화된 데이터베이스 연결 풀 라이브러리이다.바로바로 찾아 연결할 수 있기 때문에 디비연결 효율이 좋고 성능을 최적화하여 속도가 빠르다. 그리고 밑에 옵션을 보면서 장점을 더 설명할 수 있는데 Spring boot 에서 사용 시1) 의존성에 jdbc starter를 추가해준다.2) application.properties에 옵션을 추가해준다.spring: data..

DI와 IOC와 DIP (feat. 프레임워크와 라이브러리)

1. DI란?Dependency Injection으로 의존성 주입이라는 뜻객체의 의존 관계를 외부에서 주입하는 방법의존 관계란?네모 그림과 그림 그리는 함수가 예로 있다.네모 그림에 김 그림을 그리는 함수를 넣으면 네모는 김이 되고, 스마트폰을 그리는 함수를 넣으면 네모는 폰이 된다.네모 그림을 그리는 함수 A는 김을 그리거나 폰을 그리는 함수 B, C에 의해 무엇이든 될 수 있고, 이 관계를 의존 관계라 한다.이같은 의존성을 외부에서 주입하는 것을 의존성 주입 DI 라고 한다. 2. 클래스 간의 관계연관 관계class A { private B b;}의존 관계class A { public B method(B b){ return new B(); }}상속 관계class A extends B {}..

Blocking/Non-Blocking 와 Sync/Async 와 Future/Completable Future

이 전까지 동기, 비동기는 그저 화면이 깜박이면서 새로 고침되느냐 안깜박이고 이벤트 탄 곳만 바뀌느냐 정도로 알고 있었다.ㅠㅠ Blocking / Non-Blocking: 다른 주체가 작업할 때 자신에게 제어권이 있는지?* Blocking: 호출된 함수A가 제어권을 갖고 자신의 작업이 끝날 때까지 넘기지 않음-> A가 끝날 때까지 아무 것도 못하고 기다리고 있어야 함(기다릴게~빨리줘!)* Non-Blocking: 호출한 함수B에게 제어권을 넘기고 다른 일을 진행할 수 있게 함(callback)-> A와 B는 각자 알아서 본인 작업을 수행함(내 할 일할게~너도 너 할일 해서 줘) Sync / Async: 결과를 받았을 때 순서와 결과에 관심이 있는지?* Sync (동기): 호출된 함수와 호출한 함수가 수행..

Spring 웹 계층

1. Web Layer- 흔히 사용하는 컨트롤러(@Controller)와 JSP 등의 View 템플릿 영역- 외부 요청과 응답에 대한 전반적인 영역 (ex) @Filter, @ControllerAdvice 등 2. Service Layer- @Service에 사용되는 서비스 영역- 일반적으로 Controller와 DAO의 중간 영역- @Transactional이 사용되어야 하는 영역 3. Repository Layer- DB와 같이 데이터 저장소에 접근하는 영역- DAO 영역으로 이해 4. DTOs- DTO(Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체이며, 이를 위한 영역- View 템플릿 엔진에서 사용될 객체나 Repository Layer에서 결과로 넘겨준 객체 등 ..

관계형 데이터 베이스와 객체 지향 프로그래밍의 패러다임(feat.JPA)

지금까지 회사서 프로젝트를 진행하면 Mybatis + Spring 을 사용하였다.대표님도 자바 프로그래밍보다는 SQL문을 중심으로 개발하는 것을 선호하셨고, 첫회사인만큼 그런 점을 배웠다.그래서 SQL로 줄줄이 짜는 걸 굉장히 재밌어 해서 DBA를 꿈꿔볼까 싶기도 했다. 근데 지금 보는 책에서 관계형 디비로 인해 객체 지향 프로그래밍을 하면서도 객체를 중점으로 개발하지 않고 SQL 테이블로 객체를 관리하는 것에 의문을 가지고 있다고 했다.이 부분을 보는 순간 나는 한 번도 생각지도 못했던 부분이라 너무 흥미로웠다.책에서 나온 말처럼 지금까진 객체 지향보단 디비 모델링을 중심을 둔 종속 개발이며, 데이터의 저장이 중점인 관계형 디비와 기능과 속성을 관리하는 객체 지향의 패러다임이 불일치하는 상황이었다. 그..