Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 한국투자증권 양도세 신고
- CSTS 폭포수 모델
- 피보나치 예제
- 재귀 예제
- 해외증권 양도세 한국투자증권
- 톰캣 실시간 로그
- javascript 자동완성
- git 연동
- recursion example
- 한국투자증권 해외주식 양도세
- tomcat log
- 재귀함수 예제
- katalon 사용법
- 해외주식 양도세 신고
- katalon 자동화
- 테스트 자동화
- bfs 미로탐색 java
- katalon
- js 자동완성
- katalon xpath
- katalon 비교
- 주식 양도세 신고방법
- 홈택스 해외주식 양도세
- 피보나치함수
- 피보나치함수 예제
- 국세청 해외주식 양도세 신고방식
- 최대공약수 예제
- Katalon Recorder 사용법
- oracle group by
- java.sql.SQLSyntaxErrorException
Archives
- Today
- Total
엄지월드
Datasource와 DriverManager 차이 본문
기존 DriverManager를 통해서 커넥션을 획득하는 방법과 DataSource를 통해서 커넥션을 획득하는 방법에는 큰 차이가 있다.
DriverManager는 DataSource를 통해서 커넥션을 획득할 수 있다.
참고로 DriverManagerDataSource는 스프링이 제공하는 코드이다.
DriverManager
DriverManager.getConnection(URL, USERNAME, PASSWORD)
DriverManager.getConnection(URL, USERNAME, PASSWORD)
DataSource
void dataSourceDriverManager() throws SQLException {
DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
useDataSource(dataSource);
}
private void useDataSource(DataSource dataSource) throws SQLException {
Connection con1 = dataSource.getConnection();
Connection con2 = dataSource.getConnection();
log.info("connection={}, class={}", con1, con1.getClass());
}
DriverManager는 커넥션을 획득할 때마다 URL, USERNAME, PASSWORD 같은 파라미터를 계속 전달해야 한다.
반면에 DataSource를 사용하는 방식은 처음 객체를 생성할 때만 필요한 파라미터를 넘겨두고, 커넥션을 획득할 때는 단순히 dataSource.getConnection()만 호출하면 된다.
(중요) 설정과 사용의 분리
설정 : DataSource를 만들고 필요한 속성들을 사용해서 URL, USERNAME, PASSWORD 같은 부분을 입력하는 것을 말한다. 이렇게 설정과 관련된 속성들은 한 곳에 있는 것이 향후 변경에 더 유연하게 대처할 수 있다.
사용 : 설정은 신경쓰지 않고, DataSource의 getConnection()만 호출해서 사용하면 된다.
설정과 사용의 분리 설명
- 이 부분이 작아보이지만 큰 차이를 만들어내는데, 필요한 데이터를 DataSource가 만들어지는 시점에 미리 다 넣어두게 되면, DataSource를 사용하는 공세서는 dataSource.getConnection()만 호출하면 되므로, URL, USERNAME, PASSWORD 같은 속성들에 의존하지 않아도 된다. 그냥 DataSource만 주입 받아서 getConnection()만 호출하면 된다.
- 쉽게 이야기해서 리포지토리(Repository)는 DataSource만 의존하고, 이런 속성을 몰라도 된다.
- 애플리케이션을 개발해보면 보통 설정은 한 곳에서 하지만, 사용은 수 많은 곳에서 하게 된다.
- 덕분에 객체를 설정하는 부분과, 사용하는 부분을 좀 더 명확하게 분리할 수 있다.
'Server&DevOps > Database' 카테고리의 다른 글
트랜잭션 매니저 (0) | 2024.04.22 |
---|---|
트랜잭션 (1) | 2024.04.14 |
커넥션 풀(Connection Pool) (0) | 2024.04.13 |
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (1) | 2023.11.24 |
dbeaver RSA public key is not available client side (option serverRsaPublicKeyFile not set) (0) | 2022.10.28 |
Comments