http://blog.csdn.net/lxxstarii/archive/2006/03/03/614642.aspx
DAO编程一个典型的DAO实现有下列几个组件:
1. 一个DAO工厂类;
2. 一个DAO接口;(用接口,如果更改实现接口的数据库连接,只需改动或增加一个实例,改变接口实现方法就行。)
3. 一个实现DAO接口的具体类;
4. 数据传递对象(有些时候叫做值对象).
具体的DAO类包含了从特定的数据源访问数据的逻辑。在下面的这段中你将学到设计和实现数据访问对象的技术。
J2EE规范为事务划分描述了两种模式:编程性事务(programmatic)和声明性事务(declarative)。
一个典型的DAO要执行象创建、更新、和删除这的事务性操作
在设计一个DAO时,首先要问自己如下问题:
1、 事务将怎样开始?
2、 事务将怎样结束?
3、 那个对象将承担起动一个事务的责任?
4、 那个对象将承担结束一个事务的责任?
5、 DAO应该承担起动和结束事务的责任?
6、 应用程序需要交叉访问多个DAO吗?
7、 一个事务包含一个DAO还是多个DAO?
8、 一个DAO包含其它的DAO中的方法吗?
1、实体类层,即Item,带有domain logic的domain object 2、DAO层,即ItemDao和ItemDaoHibernateImpl,抽象持久化操作的接口和实现类 3、业务逻辑层,即ItemManager,接受容器事务控制,向Web层提供统一的服务调用
ItemDao定义持久化操作的接口,用于隔离持久化代码。 ItemDaoHibernateImpl完成具体的持久化工作,请注意,数据库资源的获取和释放是在ItemDaoHibernateImpl里面处理的,每个DAO方法调用之前打开Session,DAO方法调用之后,关闭Session。(Session放在ThreadLocal中,保证一次调用只打开关闭一次)
两种数据操作的DAOpublic void createWarehouseProfile(WHProfile profile)public void updateWarehouseStatus(WHIdentifier id, StatusInfo status);
刚才关注takecare(大厅)搜索到的一贴,接口当指针使(详细可以参考Java与设计模式):
import java.io.*;interface call{public void callme();}
class inst implements call{public void callme(){System.out.println("Call inst");
}
}
public class callback{static void run(call cc){cc.callme();}
public static void main(String[] args){
run(new inst());
}
}
一个更为完整的实现。import java.io.*; interface call{ public void proc(sender src,int wparam);
}
class sender{protected call ie;
public sender(call event){ie=event;}public void nofify(int wparam){
ie.proc(this,wparam);
}
}
class receiver implements call{
public void proc(sender src,int par){ System.out.println(src); System.out.println(par);
}
}class sandr extends senderimplements call{
public sandr(call event){super(event);
}
public void proc(sender src,int par){ System.out.println(src); System.out.println(par);
}
}public class callback{
public static void main(String[] args){ sandr s1=new sandr(null); sandr s2=new sandr(s1); s2.nofify(10); s1.proc(s2,10); s2.proc(s1,10);
}
}
这在Java的事件模型中还是应用很广的。值得关注。