2006-11-13

JPetStore persistence Code Reading

关键字: DaoConfig
1. 代码结构
在persistence下面有iface, sqlmapdao package以及DaoConfig.java, dao.xml文件。
iface就是定义dao的接口;sqlmapdao中定义dao的实现,sqlmapdao/sql包下是每个sqlmap所对应的xml文件,该文件就定义了每个mapped statement or 动态的statement; sql-map-config.xml就是定义iBatis的一些设置信息;到此为止,和以前都是一样的,没有什么特别的地方。

但是dao的实现有一些不同。所有的dao都继承于BaseSqlMapDao类
public class BaseSqlMapDao extends SqlMapDaoTemplate {

  protected static final int PAGE_SIZE = 4;

  public BaseSqlMapDao(DaoManager daoManager) {
    super(daoManager);
  }

}

可以看到SqlMapDaoTemplate和sping中的dao***Template比较相似,都是定义Dao的一些常用方法,具体的dao可以调用这个Template的方法完成具体的DAO操作。
public SqlMapDaoTemplate(DaoManager daoManager);
public int update(java.lang.String id, java.lang.Object parameterObject);
queryForObject, queryForList, queryForMap
queryForPaginatedList

等等操作方法。

todo:DaoManager具体还不知道是干什么用的,看名字应该能猜出点东西来。
哦,DaoManager是根据后面的dao.xml来生成的Dao的管理类,主要是:
getDao(),getTransaction(), startTransaction(), endTransaction(), commitTransaction().
<transactionManager type="SQLMAP">
      <property name="SqlMapConfigResource"
        value="com/ibatis/jpetstore/persistence/sqlmapdao/sql/sql-map-config.xml"/>
    </transactionManager>

    <dao interface="com.ibatis.jpetstore.persistence.iface.ItemDao"
      implementation="com.ibatis.jpetstore.persistence.sqlmapdao.ItemSqlMapDao"/>


具体的配置估计还得参考一些东西,唉,这个配置的东西是越来越繁杂了。
不能给一点简单的方式么?

Service层就是直接调用这些dao的方法,返回domain当中定义的领域对象:)
这里的领域对象不是简单的一一映射的关系,也不是完全的get/set方法,可以说是一个稍微rich一点的领域对象。也不能说是很rich吧,和我做BUG管理系统是一样的,不过比我做得好,因为这里的所有领域对象都实现了Serializable接口,而我当年没有实现这个接口。使得领域对象和持久层对象相互转换,sigh。

在给表示层用的BEAN中,具体还没有仔细看,不过居然有那么多的方法,改天得好好看一下。(TODO)
评论
发表评论

您还没有登录,请登录后发表评论

hiwzg
搜索本博客
最近加入圈子
存档
最新评论
  • [转]山东酒场规则
    规矩十八,花生米对喝酒人来说,是个好东西。保持清醒的头脑,酒后嘘寒问暖是少不了的 ...
    -- by hiwzg
  • 出差归来
    无意看到你的帖子了,顶一个。
    -- by lovezqw
  • 士兵突击观后感
    嗯,最近古装剧太多了。不是皇帝,就是盟主,又不是天天生活在古代。这类的片子多了不 ...
    -- by hiwzg
  • 士兵突击观后感
    士兵突击 是一部好片子,好在他真实.比起以前的很多军旅题材电视电影,有巨大的进步 ...
    -- by elf8848
  • 《资本运营论》
    JAVAEYE的系统做得也不够好啊,没有登录,填写了评论也没有用。必须登录系统, ...
    -- by hiwzg