公司接到一个ERP系统改造的项目,数据库采用原有的AS400上的DB2 5.4。数据量巨大,大约有30年的历史了,而且表之间没有关联关系。由于本人技术能力有限,所以在技术选型时感到很迷茫。迷茫的原因是一方面要考虑到系统性能问题,另一方面还要考虑开发的难易程度和系统健壮性,等等一系列问题。
我将目前比较流行的技术方案分别做了一个demo,并且以查询10万条数据为标准做性能测试。结果如下:
方案名称 第一次执行耗时 第二次执行耗时 第三次执行耗时
Struts+Jdbc 2192ms 1315ms 1299ms
Struts+Spring(JdbcTemplate) 2335ms 1317ms 1299ms
Struts+Ibatis 3081ms 1525ms 1458ms
Struts+Spring+ibatis 4172ms 2969ms 2938ms
Struts+Hibernate Java.lang.OutOfMemoryError: Java heap space
测试方法是在Action中调用DAO中的方法,在调用方法前和返回数据后,打印当前时间来计算查询所耗费的时间。
开始的时候想采用Struts+Spring+ibatis这个方案,但是通过测试后,发现这个方案的耗时要比采用Struts+Spring(JdbcTemplate)高出将近2秒。Struts+Spring(JdbcTemplate)在性能上占有一定的优势,可是在编写代码上总是给人一种不太舒服的感觉,代码如下:
public List<Employee> getEmployeeList() {
// TODO Auto-generated method stub
String sql = "select * from employee where id<?;";
return jdbcTemplate.query(sql, new Object[]{100000},
new RowMapper(){
public Object mapRow(ResultSet rs,int index)throws SQLException{
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setDempId(rs.getInt("emp_id"));
employee.setEmpId(rs.getInt("dept_id"));
employee.setFirstName(rs.getString("first_name"));
employee.setLastName(rs.getString("last_name"));
employee.setJobCat(rs.getString("job_cat"));
employee.setSalary(rs.getInt("salary"));
return employee;
}
});
}
可能一直使用Hibernate的原因吧,总感觉这段代码不太舒服。而且Spring(JdbcTemplate)没有提供分页功能,实现起来比较麻烦。
希望各位高手能给在下一些建议?谢谢先!
2008/05/07补充:
由于昨天没机会看帖子,今天刚回来就看到这篇帖子已经出现在了首页。
激动之余发表两点感谢:
1.狂谢热心参与本次讨论的各位朋友们,小弟将会把最终的项目案例与大家分享,希望能为中国软件事业的崛起贡献微薄之力。
2.感谢javaeye提供了这样好的交流平台,希望今后越做越好。
分享到:
相关推荐
随着政府大力推进中小型企业上网工程,越来越多的企业正面临企业信息化方向发展及技术选型的困扰,而对于种类繁多的方案、建议,使得企业决策人在信息化建设方案的选择上无从下手。Internet的普及,已使得企业信息化...
这款软件不仅提供全面的选型指导,还避免了查阅大量手册可能带来的困扰和不准确性。 首先,打开“汇川技术”官方网站,通过“工业自动化”分类下的“伺服”入口,用户可以轻松找到产品选型工具。这个工具包括了多种...
此外,智能建筑的设计和实施过程中,由于建设单位对智能建筑的复杂性和技术要求理解不全面,往往导致弱电系统的设计、采购、施工和管理出现问题,给后期运营带来困扰。 电气技术在智能建筑中扮演着至关重要的角色。...
例如,自动补货系统虽好,但若基础管理不到位,库存准确性不足,强行实施只会带来困扰。 再者,信息管理需要勇于面对挑战和失败。信息系统的稳定性至关重要,但为了追求完善,企业不能因害怕短暂的不稳定而停止改革...
在技术选型上,本系统采用了J2EE框架进行开发,这是一套成熟的、面向企业级应用的Java开发平台,具备良好的可扩展性和安全性。数据库方面选择了MySQL,作为开源、免费的关系型数据库管理系统,其高效稳定且易于维护...
腾讯云微服务架构体系TSF采用了如下策略和技术选型: 1. **在线协同**:通过Swagger UI进行在线接口定义,确保跨团队协作的顺畅,避免因接口变更带来的困扰。 2. **部署原则**:利用Docker进行服务打包和自动化部署...
它可能提供了一个统一的平台,使得前端、后端、数据库设计、测试等各环节能够更加协同地工作,减少了因技术选型和变更带来的困扰。 最后,该平台的愿景可能是通过结合管理制度和管理工具,实现真正的“人+制度”的...
良好的文档应包括项目概述、技术选型原因、功能描述、代码结构、API接口说明以及部署和维护指南等。这不仅有助于团队间的协作,也有利于未来项目的维护和升级。 总的来说,这个"网页设计与开发项目设计"涵盖了从...
总的来说,这篇论文详细探讨了公交查询系统的各个关键要素,从需求分析到系统实现,再到技术选型,全面展示了构建此类系统的过程。通过这样的系统,可以有效提升城市公共交通的服务质量和效率,降低市民出行的困扰。
随着校园规模的扩大和学生人数的增长,即使在疫情环境下,校园内的物品丢失率也持续上升,给师生带来了一定的经济损失和精神困扰。因此,设计并实施一个基于微信小程序的失物招领平台显得尤为必要。该平台不仅能帮助...
在通信领域,专业术语和缩写词的使用十分广泛,这常常给初学者或非专业人士带来困扰。"通信各种专用词汇缩写查询软件"正是为解决这一问题而设计的工具,它无需安装,用户可以方便地查询通信领域的各种词汇及其缩写。...
这两点在IT行业中同样适用,无论是软件开发项目还是技术团队管理,都需要团队协作来完成复杂的任务,同时,优化资源分配,比如合理安排开发人员、测试人员的角色,或者在技术选型上考虑成本效益,都是提高项目成功...
市场需求的快速增长使得AGV市场日益繁荣,但也带来了产品选型的困扰。企业在选择AGV时,需要充分了解自身需求,参考AGV选型手册,确保选购到最适合自身生产流程的AGV型号,以最大化投资回报。 总的来说,AGV凭借其...
尽管文章主要讨论了智能裁缝系统的开发设计,但其提及的移动终端应用开发和服务器技术对于理解现代互联网应用的构建和技术选型也具有一定的参考意义。结合移动设备的便携性和智能分析能力,这样的系统有望在未来的...
综上所述,高低压成套开关设备的智能化控制系统设计需综合考虑测温技术的选型与优化,同时推动国内企业提升自主研发能力,改进绝缘材料性能,以促进我国电力行业向更高效、更安全的方向发展。而随着科技的不断进步,...
综上所述,医院信息系统集成平台的建设是一项系统工程,它不仅涉及技术选型和架构设计,还涵盖了标准制定、风险管理等多个层面。通过有效的集成,医院可以提升服务质量,优化内部管理,为科研、管理和未来发展提供强...
《失物招领系统设计与实现》 失物招领系统是一种常见的信息管理平台,它旨在帮助人们在丢失物品或找到他人遗失的...通过合理的技术选型和细致的规划,我们可以构建出高效、实用的失物招领平台,为日常生活带来便利。
1. **技术选型**: - **前端技术**:采用微信小程序框架进行开发,支持跨平台运行。 - **后端技术**:采用B/S架构,使用Node.js作为服务器端语言,配合MySQL数据库存储数据。 2. **功能模块**: - **用户注册登录...
离线编程技术在机器人点焊项目中的应用是一个关键的技术手段,它极大地提高了焊接机器人的工作效率和灵活性。...这种技术的成熟和发展,无疑为现代汽车制造中的自动化焊接工艺带来了革命性的改变。