JDBC
JDBC는 자바에서 DB를 활용할 수 있도록 지원하는 API이다.
데이터 베이스 테이블과, 자바 객체 사이의 단순한 매핑을 간단한 설정을 통해 처리한다.
기존의 JDBC에서는 구현하고 싶은 로직마다 필요한 SQL문이 모두 달랐고, 이에 필요한 Connection, PrepareStatement, ResultSet 등을 생성하고 Exception 처리도 모두 해야 하는 번거로움이 존재했다.
때문에 Spring에서는 JDBC와 ORM 프레임워크를 직접 지원하기 때문에 따로 작성하지 않아도 모두 다 처리해주는 장점이 있다. (Spring-JDBC)
여기서는 Spring JDBC에 대해서 알아본다.
DataSource란?
DataSource는 JDBC 명세의 일부분이면서 일반화된 연결 팩토리이다.
즉, DB와 관계된 connection 정보를 담고 있으며, bean으로 등록하여 인자로 넘겨준다.
이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다.
DataSource는 JDBC Driver vendor(Mysql, Oracle 등) 별로 여러가지가 존재한다.
DataSource가 하는 일
- DB Server와의 기본적인 연결
- DB Connection Pooling 기능
- 트랜잭션 처리
DataSource의 구현 예시
- BasicDataSource
- PoolingDataSource
- SIngleConnectionDataSource
- DriveerManagerDataSource
DataSource 설정 및 Bean 등록, 주입 방법
DB와의 연결을 위한 DB Server에 관한 정보(Property)를 설정한다.
(url, driver, username, password)
해당 property file에 있는 값을 place holder를 통해 DataSource의 속성으로 설정한 후 해당 BasicDataSource를 bean으로 등록한다.
- Spring JDBC를 사용하려면 먼저, DB Connection을 가져오는 DataSource를 Spring IoC 컨테이너의 공유가능한 Bean으로 등록해야 한다.
생성된 BasicDataSource Bean을 Spring JDBC에 주입한다.
- DB Connection Pooling
- 자바 프로그램에서 데이터베이스에 연결(Connection 객체를 얻는 작업)은 시갆이 많이 걸린다.
- 만약, 일정량의 Connection을 미리 생성시켜 저장소에 저장했다가 프로그램에서 요청이 있으면 저장소에서 Connection을 꺼내 제공한다면 시간을 절약할 수 있는데, 이러한 프로그래밍 기법을 Connection Pooling이라 한다.
- Connection Pooling을 사용하면 속도와 퍼포먼스가 좋아진다.
- Placeholder
- 정보를 적어둔 곳에서 내용만 고치면 다른 모든 부분에서 변경된 내용이 적용된다.
- 예를 들어, Parameter 정보들을 적어둔 Property file에서 특정 정보를 수정하면 변경된 정보가
placeholder
를 통해${jdbc.password}
에 주입된다. - 예를 들어,
pom.xml
에서 springframework-version을 4.2.5.RELEASE로 설정했으면<groupID>org.springframework</groupID>
에 해당하는 밑에 요소들은${org.springframework-verson}
으로 적어주면 알아서 버전에 맞는 것이 적용된다.
참고
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html
'웹 프로그래밍 > [ Spring ]' 카테고리의 다른 글
[ Spring ] 12. DAO & DTO & Entity와 스프링 패키지의 전체 구조 (4) | 2021.07.08 |
---|---|
[ Spring ] 11. Spring에서의 Annotation (0) | 2021.07.07 |
[ Spring ] 10. AOP(Aspect Oriented Programming) (0) | 2021.07.07 |
[ Spring ] 09. DI (의존성 주입) (0) | 2021.07.07 |
[ Spring ] 08. Component Scan (0) | 2021.06.30 |