简单就是美 -- 简化hibernate,简化dao
2007-09-09 14:11
155 查看
一、简化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;
}
愿意听听各位在项目中的做法。
首先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;
}
愿意听听各位在项目中的做法。
相关文章推荐
- 使用模板模式简化DAO操作Hibernate
- 使用模板模式简化DAO操作Hibernate
- HibernateDaoSupport让简单的增删改查如此简单。
- spring-hibernate 简单dao
- hibernate4 和 spring3 整合注意事项:HibernateDaoSupport没有了找到篇好文章,我之前遇到的问题都在这都能找到。其实出现这些问题的关键就是hibernate4和hib
- HibernateDaoSupport让简单的增删改查
- HibernateDaoSupport让增 删 改 查 变得更简单。
- Class<T>泛型对象的获取及通过继承了HibernateDaoSupport的注入sessionFacoty的简单方式
- 使用模板模式简化DAO操作Hibernate
- 用模板模式简化DAO操作Hibernate
- DAO中调用getHibernateTemplate()方法时就是报空指向异常
- Spring【DAO模块】就是这么简单
- Spring【DAO模块】就是这么简单
- spring3.0就是这么简单(百度网盘地址) Hibernate3.0完整中文版教程
- 使用模板模式简化DAO操作Hibernate
- 用模板模式简化DAO操作Hibernate
- Caused by: code is 9998;desc is dao exception is org.hibernate.exception.DataException: error execu
- 史上最简单的Hibernate入门简介
- 肚子上紫红色的妊娠纹怎么去掉,去掉肚子上的妊娠纹就是这么简单
- Hibernate简单crud和Hibernate主键生成策略