커넥션을 가져오는 중복된 코드 분리
DB연결 관련된 부분을 분리해놓음으로써, DB연결과 관련된 부분에 변경이 일어났을 경우( 로그인 정보, url, db종류 등)
getConnection() 이라는 한 메소드의 코드만 수정하면된다.
관심의 종류에 따라 코드를 구분해놓았기 때문에 한 가지 관심에 대한 변경이 일어날 경우 그 관심이 집중되는 부분의 코드만 수정하면 된다.
관심이 다른 코드가 있는 메소드에는 영향을 주지도 않을 뿐더러, 관심 내용이 독립적으로 존재하므로 수정이 간단해짐.
메소드 추출 : 공통의 기능을 담당하는 메소드로 중복된 코드를 뽑아내는 것
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | package springbook.user.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import springbook.user.domain.User; public class UserDao { public void add(User user) throws ClassNotFoundException, SQLException{ //DB 연결 기능이 필요하면 getConnection() 메소드를 이용하게 된다. Connection c = getConnection(); PreparedStatement ps = c.prepareStatement( "INSERT INTO USERS(id, name, password)" +"VALUES( ?,?,?)" ); ps.setString(1, user.getId()); ps.setString(2, user.getName()); ps.setString(3, user.getPassword()); ps.executeUpdate(); ps.close(); c.close(); } public User get(String id) throws ClassNotFoundException, SQLException{ //DB 연결 기능이 필요하면 getConnection() 메소드를 이용하게 된다. Connection c = getConnection(); PreparedStatement ps = c.prepareStatement("SELECT * FROM USERS WHERE id = ?"); ps.setString(1, id); ResultSet rs = ps.executeQuery(); rs.next(); User user = new User(); user.setId(rs.getString("id")); user.setName(rs.getString("name")); user.setPassword(rs.getString("password")); rs.close(); ps.close(); c.close(); return user; } /* * 중복된 코드를 독립적인 메소드로 만들어서 중복을 제거한다. */ private Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:testDB" , "otep", "otep"); return c; } } |
'Programming > 토비의 스프링 예제' 카테고리의 다른 글
예제6. 관심사의 분리 (0) | 2014.08.20 |
---|---|
예제5. 인터페이스의 도입 (0) | 2014.08.20 |
예제4. 클래스의 분리 (0) | 2014.08.20 |
예제3. 상속을 통한 확장 (0) | 2014.08.20 |
예제1 (0) | 2014.08.18 |