简化hibernate,简化dao

一、简化hibernate

首先hibernate是一个优秀的ORM工具(此话鉴定为废话,其次,按照20/80的规律,有80%的问题不需要那20%学习起来比较麻烦的东西。

很多人在用hibernate的时候一定把关系作为精华来学习,比如一对多,多对一,以及多对多,认为只有熟练运用这个才是对hibernate的真正掌握。

说实话,这个想法从技术的角度讲有点道理,问题是很多人对这些始终是一头雾水,反正不要好看,我现在仍然是一头雾水,今天我终于给自己解放了出来,我回头去看自己的项目,发现N多的时候100%的不要关系(在 hibernate中)也不会出人命,而且效果很好。

现在,每个mapping文件中没有了set,list,map,我相信一定有N多人说我这个不符合OO什么的,不过大家反过来想,在我的项目组中会有一个明显的好处就是我将问题简化了,

大家都会做,比如Org与User的关系,1:N的关系,我不用考虑这个,直接手工去维护,dao.save(org);user.setOrgId("11");dao.save(user);

有一段时间我依次问各个项目组,你们的hibernate中用到了关联操作了么,回答清一色的“NO”,看来大家都在无意识的回避这个陷阱,呵呵,很合吾意。

二、简化dao

可能是受到appfuse的影响,一个service就有一个dao,现在从实际的角度来看仍然觉得没有太大的必要,当然,如果你是类似测试驱动的想法那么可能另当别论。现在我更喜欢一个通用的dao全部搞定,确实舒服。

service中的操作全部调用通用dao(getObjects(),saveObject(),updateObject(),removeObject())

public BeanValue saveItem(RequestMap rMap) {
    BeanValue value = null;
    try {
      log.info("=====begin to save alexItem object");
      value = new BeanValue();
      AlexItem alexItem = (AlexItem) BeanUtil.convertObject(AlexItem.class, rMap.getMap());
      dao.saveObject(alexItem);
      log.info("=====end to save alexItem object");
      value.addRequestMap("admin",alexItem);
      value.setForword("success");
    } catch (BaseException e) {
      value.addErrorMap("errorName",e);
      value.setForword("error");
    }
    return value;
  }

愿意听听各位在项目中的做法。

时间: 2024-10-29 22:51:55

简化hibernate,简化dao的相关文章

成功的关键?将事情简化、简化、再简化

我可能永远不会达到那么伟大的高度,比如创造下一个颠覆性的技术,或是登上福布斯全球亿万富翁排行榜,但我能尽我所能作为一名还算可以的企业家,过着像样的创业生活.身为与公关公司打交道的fifteen media的创始人,我认为经营一家企业的关键就是:把事情简化.简化.再简化.为了你自己和你的客户,你要将每件事情都变得简单至极.那些总是尝试同时做很多事情的企业通常都不会成功,因为他们常常让自己的力量太过分散,这样会失去焦点或忽视了目标受众.怎么理解这种"简化"的含义?我建议你可以问问自己以下这

Hibernate简化mapping问题

问题描述 我用的元注解方式声明实体,现在想去掉繁琐的申明实体方式<mapping resource="xxxx" /><mapping resource="xxxx" /><mapping resource="xxxx" />请问有什么办法只需要指定一个包就可以把所有的实体文件都加载进来? 解决方案 sessionFactory 使用下面这个org.springframework.orm.hibernate3.

Spring 与 Hibernate 的延迟加载和 Dao 模式

Hibernate 与延迟加载: Hibernate 对象关系映射提供延迟的与非延迟的对象初始化.非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来.这有时会导致成百的(如果不是成千的话) select 语句在读取对象的时候执行.这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了.当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因此失去了本想在 ORM 工具中获得的便利. 一个明显的解决方

简化企业运维,合适的网络自动化策略是关键

[51CTO.com原创稿件]从大型机计算发展到客户端-服务器 PC 时代,再发展到现在的分布式应用环境,数据中心一直在不断发展变化,满足企业的业务.任务和运营需求.然而,很多企业的数据中心网络运营仍旧依赖人力,要求运营人员训练有素并具备丰富的专业知识.这种依赖性不仅成本高昂,而且容易出现人为错误,造成网络中断,导致业务损失,难以满足当今网络的高可用性.敏捷性需求. 依赖于手动流程的网络运营存在高风险 据有关数据表明,目前仅有16%到30%的日常网络管理任务已实现自动化;80%的业务体验网络错误

简化的数据中心网络架构是未来方向么?

[51CTO.com 独家特稿]Juniper Networks在5月18日推出了一个全新的"3-2-1"数据中心网络架构.据官方称,新推出的架构它可以帮助客户扁平并简化其现有数据中心网络,即将原 有的3层网络架构减少到现在的2层.Juniper官方表示,今后会通过 "层云计划"(51CTO注:有关Juniper的层云计划请参阅<"层云"架构有望解决云计算瓶颈>),帮助企业实现单层网络结构.同时,Juniper认为在自动化.虚拟化和架

Struts+Spring+Hibernate组装web应用

web 摘要: 这篇文章将讨论怎样组合几个著名的框架去做到松耦合的目的,怎样建立你的构架,怎样让你的各个应用层保持一致.富于挑战的是:组合这些框架使得每一层都以一种松耦合的方式彼此沟通,而与底层的技术无关.这篇文章将使用3种流行的开源框架来讨论组合框架的策略 其实,就算用Java建造一个不是很烦琐的web应用程序,也不是件轻松的事情.当为一个应用程序建造一个构架时有许多事情需要考虑.从高层来说,开发者需要考虑:怎样建立用户接口?在哪里处理业务逻辑?和怎样持久化应用数据.这三层每一层都有它们各自的

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

【持久化框架】Mybatis与Hibernate的详细对比

最近做了一个hibernate与MyBatis的对比总结,希望大家指出不对之处. 一.   Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的一个子项目. MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html   Hibernate参考资料: http:

MyBatis与Hibernate的比较_java

第一章 Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的一个子项目. MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html Hibernate参考资料:http://docs.jboss.org/hibernate/core/3.6/reference