Spring JPetStore iBatis向Hibernate迁移疑惑

阅读更多
    目前在做hibernate的技术积累, 找了很多例子, 其中spring自带的jpetstore的代码结构是比较合理的,与大家讨论的DAO, DOMAIN等分层结构很一致.
    但是这个例子是spring+iBatis做的, 我在往Hibernate迁移时产生了很多疑问, 请大家指点一下.
   
    首先, 迁移的目标是仅修改DAO实现层, 不能修改DAO接口和域对象. 这样做的目的也是为了测试更换持久层的可能性和代价.在这个前提下用hibernate tools产生的PO类和HBM文件显然和已有的域对象结构存在很大出入, 我的解决方法是:
    针对查询操作:
    1. 对域对象, 再做一套查询用的PO和HBM(从多个实体PO里关联查询)
    2. 对查询出来后的PO再用PropertyUtils.copyProperties把值拷贝到域对象里
    3. 最后返回域对象
   
    针对保存操作:
    1. 把域对象的值拷贝到多个PO里
    2. 分别保存每个PO
   
    现在的疑惑是:
    1. 原有的域对象结构非常简单, 而PO为了保持对象间关系, 结构复杂, 两者在做copy时需要大量手工转换, 对list结果集还要做循环转换, 这样做是否合理?有没有更好的方案

    2. robbin曾提到Hibernate的PO就是非贫血的域模型, 那么PO是否能够直接拿来做域模型对象用? (这个又涉及了PO是否该传到view层的问题)

    3. 为了整体简单, 能否所有PO不采用对象建模, 而是仅和表结构对应是否可行?
      如主从表结构的PO里, 主表的PO属性里去掉对应子表的Set,由开发员自己编码来处理关联关系,
      需要时调用子表的DAO检索数据.
   
   
   

你可能感兴趣的:(iBATIS,Hibernate,Spring,DAO,数据结构)