티스토리 뷰
(활용)interface를 활용한 dao 구현
!
DB에 회원 정보를 넣는 dao(data access object)를 여러 DB 제품이 지원될 수 있게 구현함
환경파일(db.properties) 에서 database의 종류에 대한 정보를 얻는다
-> 정보에 맞게 dao 인스턴스를 생성항 실행한다.
db.properties file은 src file 밖에 넣어 놓습니다.
//UserInfo.java
public class UserInfo {
private String userId;
private String password;
private String userName;
//... set, get 함수만
}
//UserInfoDao.java //interface
public interface UserInfoDao {
// User에 대한 DB operation을 할 때
// 구현해야 되는 기능은 이것이다 선언 (DB version에 맞게 구현)
void insertUserInfo(UserInfo userInfo);
void updateUserInfo(UserInfo userInfo);
void deleteUserInfo(UserInfo userInfo);
}
//DB.java 형태
public class UserInfoMySqlDao implements UserInfoDao{
@Override
public void insertUserInfo(UserInfo userInfo) {
//...
}
@Override
public void updateUserInfo(UserInfo userInfo) {
//...
}
@Override
public void deleteUserInfo(UserInfo userInfo) {
//...
}
}
// UserInfoClient.java //Web에서 실행하는 부분
public class UserInfoClient {
public static void main(String[] args) throws IOException{
//파일 읽어오기
FileInputStream fis = new FileInputStream("db.properties");
//key=value로 되어있는 애들을 pair로 읽어올 수 있는 기능
Properties prop = new Properties();
prop.load(fis);
String dbType = prop.getProperty("DBTYPE"); //key가 DBTYPE인 values 찾기
UserInfo userInfo = new UserInfo();
userInfo.setUserId("gpaeng");
userInfo.setPasswd("12335");
userInfo.setUserName("paeng");
UserInfoDao userInfoDao = null; //interface type
if (dbType.equals("ORACLE")) {
userInfoDao = new UserInfoOracleDao();
}
else if (dbType.equals("MYSQL")) {
userInfoDao = new UserInfoMySqlDao();
}
else {
System.out.println("db error");
return ;
}
userInfoDao.insertUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);
userInfoDao.deleteUserInfo(userInfo);
}
}
반응형
'Tip and Error > JAVA' 카테고리의 다른 글
toString() & equals() & hashCode() & clone() (0) | 2021.04.16 |
---|---|
default & static & private (0) | 2021.04.16 |
인터페이스 (interface) (0) | 2021.04.14 |
추상 클래스(abstract class) & 템플릿 메서드(final) (0) | 2021.04.13 |
instance 형 확인 (instanceof) (0) | 2021.04.12 |
공지사항
최근에 올라온 글