DAO
dao
1)什么是dao
data access object(数据访问对象),
dao封装了数据访问逻辑,使得调用者不用关心
具体的数据访问技术就可以访问数据库或者其它的
存储设备(比如文件、目录服务器、或者是其它的
第三方的程序)。
2)dao的组成
a,实体
一个java类,这个类与数据库中的表对应。
比如,t_order表与Order类对应:
对应关系指的是:
t_order表名与Order类名对应
t_order表的列与Order类的属性对应
t_order表中的一条记录与Order
类的一个实例对应
b,dao接口
声明一系列方法(即对数据库进行哪些操作),
这些方法应该与具体的技术无关。
c,dao实现
实现dao接口的一个具体类
d,工厂
提供符合接口定义的对象,调用者不用关心
对象的创建细节。
也就是说,通过工厂,可以将调用者与要调用的
对象解耦了。
package util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class ConfigUtil { private static Properties props = new Properties(); static { InputStream is = ConfigUtil.class.getClassLoader().getResourceAsStream( "test/config.properties"); try { props.load(is); } catch (IOException e) { e.printStackTrace(); } } public static String getValue(String key) { return props.getProperty(key); } public static void main(String[] args) { System.out.println(getValue("StudentDAO")); } }
package util; public class Factory { public static Object getInstance(String type) { String className = ConfigUtil.getValue(type); Object obj = null; try { obj = Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); } return obj; } }
package dao; import java.util.List; import entity.Student; public interface StudentDAO { public List<Student> list() throws Exception; public void add(Student s) throws Exception; public void delete(long id) throws Exception; public Student find(long id) throws Exception; public void update(Student s) throws Exception; }