论坛首页 Java企业应用论坛

Spring JPetStore iBatis向Hibernate迁移疑惑

浏览 4441 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-19  
    目前在做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检索数据.
   
   
   
   发表时间:2006-09-19  
针对po,改动较少!
ibatis与hibernate应该是通用的!
在没有abator之前,我都用hibernate的DB2DO生成工具!

不过有一点是比较棘手的!
在ibatis里,延迟加载的性能没有表连接来得直接,方便,快速!
原因是大数据量有分页在,不会有任何性能损失!反而延迟让可读性变得很低!

所以ibatis里,多半是直接做连接查询的!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics