Skip to content

Commit

Permalink
1장: DAO의 확장 - 인터페이스의 도입
Browse files Browse the repository at this point in the history
앞서 SimpleConnectionMaker에 종속적이 었으므로 확장이 어려웠다.
중간에 추상적인 느슨한 연결고리인 인터페이스를 만들어줌으로써, 긴밀하게 연결되지 않도록 변경할 수 있다.

하지만, UserDao에서 ConnectionMaker를 생성하는 코드는 여전히 남아있다.
  • Loading branch information
kimdahyeee committed Mar 6, 2020
1 parent 7f5ae21 commit a2de774
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 21 deletions.
@@ -0,0 +1,8 @@
package com.toby.tobyspring.user.dao;

import java.sql.Connection;
import java.sql.SQLException;

public interface ConnectionMaker {
public Connection makeNewConnection() throws ClassNotFoundException, SQLException;
}
Expand Up @@ -4,7 +4,8 @@
import java.sql.DriverManager;
import java.sql.SQLException;

public class SimpleConnectionMaker {
public class DUserConnectionMaker implements ConnectionMaker {
@Override
public Connection makeNewConnection() throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "dahye", "dahye");
Expand Down
8 changes: 0 additions & 8 deletions src/main/java/com/toby/tobyspring/user/dao/DUserDao.java

This file was deleted.

@@ -0,0 +1,14 @@
package com.toby.tobyspring.user.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class NUserConnectionMaker implements ConnectionMaker {
@Override
public Connection makeNewConnection() throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "dahye", "dahye");
return connection;
}
}
8 changes: 0 additions & 8 deletions src/main/java/com/toby/tobyspring/user/dao/NUserDao.java

This file was deleted.

8 changes: 4 additions & 4 deletions src/main/java/com/toby/tobyspring/user/dao/UserDao.java
Expand Up @@ -5,13 +5,13 @@
import java.sql.*;

public abstract class UserDao {
private SimpleConnectionMaker simpleConnectionMaker;
private ConnectionMaker connectionMaker;

public UserDao() {
this.simpleConnectionMaker = new SimpleConnectionMaker();
this.connectionMaker = new DUserConnectionMaker();
}
public void add(User user) throws ClassNotFoundException, SQLException {
Connection connection = simpleConnectionMaker.makeNewConnection();
Connection connection = connectionMaker.makeNewConnection();
// sql 실행
PreparedStatement preparedStatement = connection.prepareStatement("insert into users(id, name, password) values(?, ?, ?)");
preparedStatement.setString(1, user.getId());
Expand All @@ -26,7 +26,7 @@ public void add(User user) throws ClassNotFoundException, SQLException {
}

public User get(String id) throws ClassNotFoundException, SQLException {
Connection connection = simpleConnectionMaker.makeNewConnection();
Connection connection = connectionMaker.makeNewConnection();

// sql 실행
PreparedStatement preparedStatement = connection.prepareStatement("select * from users where id = ?");
Expand Down

0 comments on commit a2de774

Please sign in to comment.