파게로그
[Spring MVC] 서비스 객체, Connection 분리하기 본문
서비스 객체의 결합력을 낮추기
서비스 객체를 다른 객체(다른 구현기술)로 바꾸려면?
service:JDS - JDS(JDBCService) - DB
JPS(JPAService)
MyBatis
...
지금 service:JDS에서 알 수 있듯이 결합력이 너무 높음.
교체를 용이하도록 하기 위해 결합력을 낮추게, 인터페이스를 추가해준다.
service:S - <<interface>> S(Service) - JDBCService or JPAService - DB
Service에다가 Connection 정보(url, uid, pwd, driver 등)을 직접 넣어두면 배포 후 변경이 불가능하므로 재컴파일, 재배포 등의 과정이 필요하다.
JDBEmpService 클래스에다가
private DataSource dataSource; // import javax.sql.DataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
그리고 기존의
Class.forName(driver);
Connection con = DriverManager.getConnection(url, uid, pwd);
는 다음과 같이 대체한다.
Connection con = dataSource.getConnection();
그리고 xml에서
<bean id="empService" class="com.ddoongi.web.service.jdbc.JDBCEmpService">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521/xepdb1" />
<property name="username" value="c##berry" />
<property name="password" value="straw" />
</bean>
그리고 DriverManagerDataSource 사용을 위해 메이븐 dependencies에 org.springframework spring-jdbc을 추가해준다.
'콤퓨타 왕기초 > Spring' 카테고리의 다른 글
[Spring MVC] Annotation을 활용한 서비스 객체 DI 등 (0) | 2021.05.02 |
---|---|
[Spring MVC] Spring 설정 파일 분리하기 (0) | 2021.05.01 |
[Spring MVC] 서비스 객체 사용하기 (0) | 2021.05.01 |
[JDBC] JDBC 연결 (0) | 2021.05.01 |
[JDBC] JDBC (0) | 2021.05.01 |