`
wangrui
  • 浏览: 186826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring使用之:与Struts2和Hibernate搭档

阅读更多
Struts,Spring,Hibernate这三个火枪手这几年可以说是所向披靡,红的发紫。我不想说它们每一个的功能,这些网上随便找找就可以得到一堆的结果;也不想说它们之间怎么集成。我要说得是在它们搭档的时候如何让它们各就其职。

我们在做一个应用的时候,有好多要考虑的问题,比如:如何处理例外,如何处理事务,如何访问数据库等等。每个人都有自己的做法。在Struts,Spring,Hibernate集成的项目中我们一般会分出好多的类:Action、Service接口、Service的实现、Dao接口、Dao的实现。这些类又是如何分担这些任务的呢?

也许你会说数据库访问当然要由Dao负责,但是访问中抛出的例外如何办?需要考虑事务吗?我的做法,抛出的例外全部向上抛出(抛给service层),而且大多是抛出运行时例外,dao不需要处理例外。事务更不应该dao来处理。也就是说dao中不应该有commit。dao实现可以用hibernate的方式,而且hibernate也只能用在dao的实现中。

Service主要负责处理事务,大多数例外也抛给action不做处理。一个Service可以依赖多个dao,这样才能保证事务的完整性。

Action负责处理例外,尽量依赖一个service,也许有人不同意这一点,但是当依赖多个service时就容易范事务问题,违反事务的原子性。也许你开发时不会有问题,测试有可能也会蒙混过关。但是上线后终究会出现一些莫名奇妙的问题。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics