본문 바로가기

Spring52

DataSource 1. 개념DB 커넥션을 획득하는 로직을 추상화한 인터페이스 2. 등장배경 기존에는 Connection을 얻는 방식이 달라지면 Application Logic이 수정되어야 했음 Connection을 얻는 방식에 따라 Application Logic이 수정되어야 하는 이슈 때문에Connection을 얻는 방식을 추상화한 DataSource라는 인터페이스가 등장 DataSource에서 Connection을 얻는 방식을 추상화했기 때문에 Connection을 얻는 방식이 달라져도 Application Logic을 수정할 필요가 없음 3. Connection 획득 방법Connection을 획득하는 방법에는DriverManager를 이용하여 Query 요청 시마다 Connection을 할당받는 DriverMa.. 2025. 7. 17.
Connection Pool 개념DB Connection을 미리 할당받아 보관하는 라이브러리 등장배경Connection Pool이 등장하기 전에는 Query를 요청할 때마다 Connection을 맺고 끊는 동작이 필요했다Connection을 맺고 끊기 위해서 3-way-handshaking이 발생했고 이에 따른 오버헤드가 발생했다Connection에 발생하는 오버헤드로 성능저하가 발생했다 정의이에 Query를 요청할 때마다 Connection을 맺는 개념이 아닌미리 Connection을 맺어두고 필요할 때 가져다 쓰는 개념이 등장했다이를 Connection Pool이라고 한다 DB Connection Pool에는commons-dbcp2, tomcat-jdbc pool, HikariCP등이 존재했으나오늘날에는 성능과 편의성을 이유.. 2025. 7. 16.
Spring Security 기본 구조 로그인(인증) 처리를 하기 위해서는 클라이언트가 Request를 보냈을 때 Request를 처리하는 Controller에 도달하기 전에 클라이언트의 Authentication(인증)이 실행되어야 하므로 Spring Security는 Servlet의 Filter를 이용하여 구현된다 (자세한 개념은 Filter에 대한 개념을 찾아볼 것) 일반적으로 Filter는 아래와 같이 구성된다 필터 구현 예) public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletExc.. 2023. 7. 8.
복수의 유일키 제약조건 지정하는 방법 문법 @Table( name="테이블 이름", uniqueConstraints={ @UniqueConstraint( name = "unique 제약조건 이름", columnNames = { "포함할 컬럼이름 1", "포함할 컬럼이름 2" } ), } public class Entity{ } 예제 @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Builder @Table(name="fcm_device_token", uniqueConstraints= { @UniqueConstraint( name = "fcm_device_token_device_token_uindex", columnNames = { "user_id", "devic.. 2023. 5. 26.