DAO及factory示例 =============Student.java========== import java.sql.*; public class Student implements java.io.Serializable{ private String id; private String name; private Date birthday;
public Student(){} public Student(String id, String name, Date birthday){ this.id = id; this.name = name; this.birthday = birthday; }
public String getId() { return id; } public void setId(String id) { this.id = id; }
public String getName() { return name; } public void setName(String name) { this.name = name; }
public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
=================Course.java====================== public class Course implements java.io.Serializable{ private String id; private String name; private String description;
public Course() {} public Course(String id, String name, String description){ this.id = id; this.name = name; this.description = description; }
public String getId() { return id; } public void setId(String id) { this.id = id; }
public String getName() { return name; } public void setName(String name ) { this.name = name; }
public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
==============SMdao.java================== import java.sql.*; public interface SMdao { public Student createStudent(String id, String name, Date birthday); publc Course createCourse(String id, String name, String description);
public Student findStudent(String id); public Course findCourse(String id);
public void clean(); }
==============FileSMdaoImpl.java============== import java.util.Properties; import java.sql.*; import java.io.*;
public class FileSMdaoImpl implements SMdao { private Properties pro; private final static String SFILE_URL = "student.file.url"; private final static String CFILE_URL = "course.file.url"; public FileSMdaoImpl(Properties pro){ this.pro = pro; }
public Student createStudent(String id, String name, Date birthday) { FileOutputStream fos = null; ObjectOutputStream oos = null; Student stu = null;
try { fos = new FileOutputStream(pro.getProperty(FILE_URL), true); oos = new ObjectOutputStream(fos); stu = new Student(id, name, birthday); oos.writeObject(stu); } catch(Exception e) { stu = null; } finally{ try { if(oos != null) oos.close(); } catch(Exception e){} try { if(fos != null) oos.close(); } catch(Exception e) {} }
return stu; }
public Course createCourse(String id, String name, String description){ return null; }
public Student findStudent(String id) { return null; }
public Course findCourse(String id) { return null; }
public void clean() {} } ==============DBSMdaoImpl.java============== import java.sql.*; import java.util.Properties;
public class DBSMdaoImpl implements SMDao { private Connection con; private final static String DBDRV = "db.driver"; private final static String DBURL = "db.url"; private final static String DBUSER = "db.user"; private final static String DBPASSWD = "db.password";
public DBSMdaoImpl(Properties pro) { try { Class.forName(pro.getProperty(DBDRV)); String user = pro.getProperty(DBUSER); String passwd = pro.getProperty(DBPASSWD); if(user != null) con = DriverManager.getConnection(pro.getProperty(DBURL), user, passwd); else con = DriverManager.getConnection(pro.getProperty(DBURL)); } catch(Exception e){} }
public Student createStudent(String id, String name, Date birtyday) { if(con == null) return null; Student stu = null; PreparedStatement stm = null;
try { stm = con.prepareStatement("insert into student(id, name, birthday) " + "values(?, ?, ?)"); stm.setString(1, id); stm.setString(2, name); stm.setDate(3, birthday);
if(stm.executeUpdate() > 0) stu = new Student(id, name, birthday); }catch(Exception e){} finally{ try {if(stm != null) stm.close();} catch(Exception e) {} }
return stu; }
public Course createCourse(String id, String name, String desc) { return null; } public Student findStudent(String id) { return null; } public Course findCourse(String id) { return null; }
public void clean() { try { if(con != null) con.close(); }catch(Exception e) {} } }
===============SMdaoFactory.java=============== import java.util.*;
public class SMdaoFactory { Properties pro; public static final String TYPE_FILE = "file"; public static final String TYPE_DB = "database"; private String type; private static SMdaoFactory factory; static{ factory = new SMdaoFactory();}
private SMdaoFactory() {
}
public static SMdaoFactory newInstance() { return factory; }
public void setType(String type) { this.type = type; }
public void setProperties(Properties pro) { this.pro = pro; }
public SMdao createSMdao() { if(type.equals(TYPE_FILE)) return new FileSMdaoImpl(pro); else return new DBSMdaoImpl(pro); } }
=================Main.java========================================= import java.io.*; import java.util.*; import java.sql.*; public class Main{ public static void main(String args[]){ Properties pro = new Properites(); try { pro.load(Main.class.getResourceAsStream("conf.properties"); }catch(Exception e) { e.printStackTrace(); System.exit(1); }
SMdaoFactory factory = SMdaoFactory.newInstance(); factory.setType(SMdaoFactory.TYPE_DB); factory.setProperties(pro); SMdao dao = factory.createSMdao(); GregorainCalendar calendar = new GregorainCalendar(); calendar.set(Calendar.YEAR, 1975); calendar.set(Calendar.MONTH, 2); calendar.set(Calendar.DAY_OF_MONTH, 21); java.sql.Date birthday = new java.sql.Date(calendar.getTimeInMills()); Student stu = dao.createStudent("12345", "George", birthday); } } ==============conf.properties=================== db.driver=COM.pointbase.jdbc.jdbcUniversalDriver db.url=jdbc:pointbase:server://george/sample db.user=pbpulic db.password=pbpublic
student.file.url=student course.file.url=course
|