1、事务处理所在层次问题
现有程序事务处理在DAO层,如果涉及多个service的方法无法保证事务的一致性。
事务最好是服务层,多个service方法操作,可以配置在一个事务中
2、事务配置方式
现有方式为java的动态代理方式,最好配置为cglib方式
优点:配置简便,不必每个service类都单独配置事务,且可以在service层统一配置事务。
因为低版本的cglib jar可能导致class类不会销毁,所以最好升级cglib版本,现有版本为2.0 可以升级到2.1.3
最好不要编程控制事务的边界,交由Spring的AOP自动处理,service专注于业务逻辑处理,事务的传播属性为required,如果已经有事务则使用当前事务
3、复杂查询的性能瓶颈
建议使用JDBCTemplate,而不使用Hibernate包装SQL,造成SQL调优困难,hibernate自动生成的SQL可能很复杂
4、前端展现层与各层绑定
前端展现层为dataWindow自定义标签,在此之上封装了很多类,而dao层返回的参数为ResultParameter,造成各层之间相互绑定,且前端更换
组件十分困难,能否使用json ajax方式前后台交互数据
5、日志打印过多
日志文件存在大段日志语句SQL代码,虽然带来了日志查找方便,但是这将会比较大地影响性能
6、单表上建立过多索引
一般情况下,一次查询只是使用一次索引,对于多个查询条件的SQL,查询建议对多个字段建立联合索引最有效
如:web_Cus_Client
SELECT *
FROM web_Cus_Client a
where a.C_Certf_Cls = '01'
and a.C_Clnt_Nme like '欧阳%'
and a.C_Certf_Cde = '220821198003160310'
and a.C_Is_Valid = '1'
and a.C_Clnt_Mrk = '1'