Properties를 이용하여 '동적코딩방식'을 적용한다.
기존의 자바소스코드 내부에 명시적으로 작성하였던 정적코딩방식(하드코딩)과는 다르게
외부파일을 만들어서 관리할 수 있다. => 유지보수에 용이함!
Properties prop 개체를 만들면
prop.setProperties("키", "밸류");
prop.getProperties("키");
prop.store("키값", "별칭"); (키값으로 Stream을 넣어준다. new FileOutputStream("파일명") => 파일 기록)
prop.load("키값"); (키값으로 Stream을 넣어준다. new FileInputStream("파일명") => 파일 읽어오기)
을 이용할 수 있다.
그래서,
1. JDBC Driver등록 구문, 내가 접속할 DB의 URL정보, 계정명, 비밀번호를 외부에 저장해두고 사용할 수 있다.
Static으로 위의 정보들을 빼놓고
1) [Run]에서 'Driver' 설정정보들을 FileOutput하여 파일로 빼놓고
public class Run {
public static void main(String[] args) {
Properties prop = new Properties();
try {
prop.store(new FileOutputStream("driver.properties"), "설정정보");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2) [Template]에 static으로 FileInput하여 기존의 Connection 객체에 get으로 만들어 놓기
public class JDBCTemplate {
public static Connection getConnection() {
Connection conn = null;
Properties prop = new Properties();
try {
prop.load(new FileInputStream("resources/driver.properties"));
// 1) JDBC Driver 등록
Class.forName(prop.getProperty("driver"));
// 2) Connection 객체 생성
conn = DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"), prop.getProperty("password"));
conn.setAutoCommit(false); // 오토커밋 꺼주기
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
3) [Service]에서 Connection객체를 사용할 수 있다.
(JDBCTemplate.getConnection하면 새로운 Driver에 연결된 Connection 객체 사용 가능!)
public class MemberService {
public int insertMember(Member m) {
Connection conn = JDBCTemplate.getConnection();
JDBCTemplate.close(conn);
return result;
}
}
2. SQL문도 외부에 저장해두고 사용할 수 있다. XML파일로 저장하여 불러 사용해보자.
prop.storeToXML(키값 + 밸류);
prop.loadFromXML(키값);
1) [Run]에서 'SQL문'을 FileOutput하여 파일로 빼놓고
public class Run {
public static void main(String[] args) {
Properties prop = new Properties();
try {
prop.storeToXML(new FileOutputStream("member-mapper.xml"), "Member Mapper");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2) [DAO]에서 생성자로 FileInput하여 new MemberDao(). 할때마다 Properties 객체를 읽어올 수 있다.
public class MemberDao {
private Properties prop = new Properties();
public MemberDao() {
try {
prop.loadFromXML(new FileInputStream("resources/member-mapper.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
실습...
1. ProductManager
최종(Template + Properties버전으로 교체)
2. 짝궁끼리 한 프로젝트
최종(Template + Properties버전으로 교체)
3. Message + Board
최종(Template + Properties버전으로 교체)
김난도- 트렌드 코리아
'JDBC > JDBC 수업' 카테고리의 다른 글
#33. Test. TeamProject(TODOLIST) (0) | 2023.08.17 |
---|---|
#30. JDBC(model에 service클래스 추가), Template (0) | 2023.08.11 |
#29. test... 팀플과제 (0) | 2023.08.10 |
#28. PreparedStatement (0) | 2023.08.09 |
#27. JDBC, Connection, Statement, ResultSet (0) | 2023.08.08 |