DAO编程初学

    技术2022-05-11  85

    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的事件模型中还是应用很广的。值得关注。

     

    最新回复(0)