浏览 2507 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-16
整体架构:Hibernate+Spring+Struts1.1+Ajax(只用了一点点Ajax) Web服务器: Tomcat 5.0.28 数据库服务器:Oracle 9i 总的来说系统分成三层:持久层,业务层和Web层。 整个项目纵向开发,每个人负责单一模块的所有层的代码,各个模块之间的调用,自行协调。 首先从持久层来说,分成两个包,bean和dao:bean包内包含自动生成的hbm文件和类文件,单张表对应单个类,没有级联映射;dao包内包含的对单表(有的也包含业务逻辑相关的表)的CRUD操作(通过HibernateTemplate完成)。 业务层:service大部分只是简单调用了dao的类。 Web层:分成两个包form和action,form包内包含了ActionForm类文件;action包内包含的DispatchAction类文件,每个DispatchAction完成对一个数据表的crud操作。 各层之间的数据传递:数据库查询得到ArrayList,其中包含了bean类的对象,由持久层一直到Web层。由页面获的数据则通过ActionForm将数据复制到bean类中(手工完成的,繁!!!),最终写入数据库。 各层之间得耦合:通过Spring IOC “解耦”。 异常处理:没有自定义异常类型,持据层捕获异常,throw新得RuntimeException,一直抛到Web层。 事务配置:通过HibernateTransactionManager配置在业务层。通过方法名匹配,将addXXX,updateXXX,delXXX配置成原子操作。 还有一点,struts通过plugin加载spring,所有的action请求都被发送到org.springframework.web.struts.DelegatingActionProxy,通过method参数执行对应的方法。 整个过程没有考虑性能,所以对HQL和Hibernate没有深入学习(可惜!)。 俺是新手一个,哪里没有说明白的,请大家随便问。 系统不合理的地方,请大家任意批!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-16
不亲身去体会或看到代码,就是怎样的烂了。其实等你经历了两个公司后,你就不会报太多幻想,大部分的公司系统从设计,编码和规范都很烂了,特别是规范吧,到做时间长了,就没办法去管了。除非你进ibm之类的公司,应该就好多了!
|
|
返回顶楼 | |
发表时间:2007-09-17
2点建议
1. 由页面获的数据则通过ActionForm将数据复制到bean类中(手工完成的,繁!!!) 可以使用apache common 的beanutils 2. 异常处理:没有自定义异常类型,持据层捕获异常,throw新得RuntimeException,一直抛到Web层。 catch-rethrow的开销比较大,最好只catch自己关心的 |
|
返回顶楼 | |
发表时间:2007-09-17
melin 写道 不亲身去体会或看到代码,就是怎样的烂了。其实等你经历了两个公司后,你就不会报太多幻想,大部分的公司系统从设计,编码和规范都很烂了,特别是规范吧,到做时间长了,就没办法去管了。除非你进ibm之类的公司,应该就好多了!
hoho,在IBM一面被刷了!!!惨啊! |
|
返回顶楼 | |
发表时间:2007-09-17
gordon@java 写道 2点建议
1. 由页面获的数据则通过ActionForm将数据复制到bean类中(手工完成的,繁!!!) 可以使用apache common 的beanutils 曾经尝试过用Reflection,但是被公司的人给否了; beanutils以前没用过,学习先! gordon@java 写道 2点建议
2. 异常处理:没有自定义异常类型,持据层捕获异常,throw新得RuntimeException,一直抛到Web层。 catch-rethrow的开销比较大,最好只catch自己关心的 在持久层捕获的异常以unchecked exception的形式抛到业务层,然后在业务层又重抛到Web层, 而且日志系统也重复记录了异常信息。 不知道有好的解决办法没有? |
|
返回顶楼 | |
发表时间:2007-09-18
beanutils里面用的也是reflection
每层都定义好自己的exception咯,尽量不要在过多的地方catch unchecked的exception,如果一个地方不catch但是忘记了再throw的话,程序就会怎么死的都不知道了 一个简单的例子是SqlException |
|
返回顶楼 | |