티스토리 뷰

Tip and Error/JAVA

인터페이스 활용 (interface)

geonwoopaeng@gmail.com 2021. 4. 14. 18:20

(활용)interface를 활용한 dao 구현


캡처
!


  • DB에 회원 정보를 넣는 dao(data access object)를 여러 DB 제품이 지원될 수 있게 구현함

  • 환경파일(db.properties) 에서 database의 종류에 대한 정보를 얻는다

    -> 정보에 맞게 dao 인스턴스를 생성항 실행한다.

  • db.properties file은 src file 밖에 넣어 놓습니다.


캡처(1)


//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);
    }
}
반응형
공지사항
최근에 올라온 글