JDBC DAOFActory 클래스 구현

Java 코드
  • package ajax.user.language.factory.dao_factory;   
  •   
  • import java.io.File;   
  • import java.io.FileInputStream;   
  • import java.io.InputStream;   
  • import java.util.Properties;   
  •   
  •   
  • /**  
  • * 이것은 제가 최근에 JDBC 기술을 배웠을 때입니다. 예전에 다른 사람이 코드를 써서 자신만의 작은 도구를 개발한 적이 있습니다.
  • * 이 프로그램은 주로 프로필을 읽고dao층 실현 대상을 생성한다(반사기술을 사용했다). 
  • * 프로그램의 장점: (1) DAO층의 다양한 실현 대상을 생성할 수 있다(Object 대상을 되돌려주려면 강제 전환이 필요하다)
  • *(2) 멀티스레드 모드에서도 하나의 공장 대상이 있습니다. 
  • *(3) 생산dao층 실현 대상을 사용하여 밑바닥에 JDBC가hibernate가 되거나 다른 실현이 있어도 코드를 수정하지 않고 프로필만 수정할 수 있음
  •  * @author kevin      Email:[email protected]  
  •  * 2010-01-09  
  •  */  
  • public class DaoFactory {   
  • /**공장 대상 인용*/
  •     private static DaoFactory daoFactory=null;   
  • /**dao 구현 대상 인용*/
  •     private static Object daoImpl=null;   
  • /** new 객체 차단*/
  •     private DaoFactory(){}   
  • /** 플랜트 객체 작성*/
  •     public static DaoFactory getDaoFactoryInstance(){   
  •         if(daoFactory==null){   
  •             synchronized(DaoFactory .class){   
  • if(daoFactory=null){//이 판단이 없으면 두 라인이 동시에 이 방법에 접근하면 두 대상을 만들 수 있습니다
  •                 daoFactory=new DaoFactory();   
  •             }   
  •           }   
  •         }   
  •         return daoFactory;   
  •     }   
  •     /**  
  • * 이것은properties 파일을 통해dao 구현 클래스 대상을 생성하는 것이다
  • * properti 파일 쓰기:userDao=ajax.user.language.entity.User(이것은 클래스의 전체 이름); 
  • * 이 방법은 Object 대상을 되돌려주기 때문에 사용할 때 필요한 실현 대상으로 강제로 변환합니다. 
  •      * @param key userDao  
  • * @param filePath properties 파일 경로
  • * @return Object 객체
  •      */  
  •     public Object produceDaoImpObject(String key,String filePath){   
  •         try {   
  •             Properties prop=new Properties();   
  •             InputStream input=new FileInputStream(new File(filePath));   
  •             prop.load(input);   
  •             String daoClass=prop.getProperty(key);   
  •             daoImpl=Class.forName(daoClass).newInstance();   
  •         } catch (Exception e) {   
  •             throw new ExceptionInInitializerError();   
  •         }   
  •         return daoImpl;   
  •     }   
  •     /**  
  • * 프로필 이름을 통해 src 디렉터리의 프로필 읽기
  •      * @param key  
  • * @return Object 객체
  •      */  
  •     public Object produceDaoImpObjectOverFileName(String key,String FileName){   
  •         try {   
  •             Properties prop=new Properties();   
  •             InputStream input=DaoFactory.class.getClassLoader().getResourceAsStream(FileName);   
  •             prop.load(input);   
  •             String daoClass=prop.getProperty(key);   
  •             System.out.println(daoClass);   
  •             daoImpl=Class.forName(daoClass).newInstance();   
  •         } catch (Exception e) {   
  •             e.printStackTrace();   
  •             throw new ExceptionInInitializerError();   
  •         }   
  •         return daoImpl;   
  •     }   
  • }  
  • package ajax.user.language.factory.dao_factory; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; /** *          JDBC   :                       (      ) *                dao     (       ); *     :(1)    DAO         (  Object        ) * (2)                。 * (3)    dao     ,       JDBC hibernate      ,                * @author kevin Email:[email protected] * 2010-01-09 */ public class DaoFactory { /**      */ private static DaoFactory daoFactory=null; /**dao      */ private static Object daoImpl=null; /**  new  */ private DaoFactory(){} /**      */ public static DaoFactory getDaoFactoryInstance(){ if(daoFactory==null){ synchronized(DaoFactory .class){ if(daoFactory==null){//        ,                       daoFactory=new DaoFactory(); } } } return daoFactory; } /** *     properties     dao      * properti    :userDao=ajax.user.language.entity.User(      ); *          Object  ,                    。 * @param key userDao * @param filePath properties     * @return Object   */ public Object produceDaoImpObject(String key,String filePath){ try { Properties prop=new Properties(); InputStream input=new FileInputStream(new File(filePath)); prop.load(input); String daoClass=prop.getProperty(key); daoImpl=Class.forName(daoClass).newInstance(); } catch (Exception e) { throw new ExceptionInInitializerError(); } return daoImpl; } /** *          src         * @param key * @return Object   */ public Object produceDaoImpObjectOverFileName(String key,String FileName){ try { Properties prop=new Properties(); InputStream input=DaoFactory.class.getClassLoader().getResourceAsStream(FileName); prop.load(input); String daoClass=prop.getProperty(key); System.out.println(daoClass); daoImpl=Class.forName(daoClass).newInstance(); } catch (Exception e) { e.printStackTrace(); throw new ExceptionInInitializerError(); } return daoImpl; } } 

    Java 코드
  • 테스트 클래스:
  •     :

    Java 코드
  • package ajax.user.language.dao.impl;   
  •   
  • import ajax.user.language.entity.Student;   
  • import ajax.user.language.factory.dao_factory.DaoFactory;   
  •   
  • public class Test {   
  •        
  •     public static void main(String[] args) {   
  •         DaoFactory daoFactory=DaoFactory.getDaoFactoryInstance();   
  •         //StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObjectOverFileName("StudentDaoImpl","daoconfig.properties");   
  •         //StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObject("StudentDaoImpl","D://newapps//workspace//ajax//src//daoconfig.properties");   
  •         StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObject("StudentDaoImpl","src/daoconfig.properties");   
  •         Student s1=new Student();   
  •         s1.setId("stu1");   
  •         s1.setName("zhangsan");   
  •         s1.setSex("F");   
  •         try {   
  •             stuImpl.addStudent(s1);   
  •         } catch (Exception e) {   
  •             e.printStackTrace();   
  •         }   
  •            
  •     }   
  •   
  • }  
  • package ajax.user.language.dao.impl; import ajax.user.language.entity.Student; import ajax.user.language.factory.dao_factory.DaoFactory; public class Test { public static void main(String[] args) { DaoFactory daoFactory=DaoFactory.getDaoFactoryInstance(); //StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObjectOverFileName("StudentDaoImpl","daoconfig.properties"); //StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObject("StudentDaoImpl","D://newapps//workspace//ajax//src//daoconfig.properties"); StuDaoImpl stuImpl=(StuDaoImpl)daoFactory.produceDaoImpObject("StudentDaoImpl","src/daoconfig.properties"); Student s1=new Student(); s1.setId("stu1"); s1.setName("zhangsan"); s1.setSex("F"); try { stuImpl.addStudent(s1); } catch (Exception e) { e.printStackTrace(); } } } 

    구성 파일:daoconfig.properties
    Properties 코드
  • StudentDaoImpl=ajax.user.language.dao.impl.StuDaoImpl  
  • 좋은 웹페이지 즐겨찾기