1.要求能够达到系统80%以上的重用,
2.系统架构采用STRUTS(不用TAG)
3.数据访问层用DAO模式和SQL mapping方式(www.ibatis.com),要让其结合在一起
4.因为项目本身是多业务分布模式,所以要有权限认证(不同用户访问不同数据)
看了wait4friend 朋友的程序,和其它的众多资料,感觉离上述要求差别太远,所以想自己动手写一个,各位能不能给出一个整体规划的建议,等写好了,一定奉献给大家
看了wait4friend 朋友的程序,和其它的众多资料,感觉离上述要求差别太远,所以想自己动手写一个,各位能不能给出一个整体规划的建议,等写好了,一定奉献给大家
Cheers
-Wanchun
现在正在实现数据查询的组件化
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
第一页能正常显示,往下翻时则报错:用尽的result
该怎么解决呢?
需要说明的几个问题,
1、resultset是个连接,所以不必担心上百万条的搜索结果会耗尽内存。
2、resultset是个游标,数据库只查询到开始一定数量的记录后,就开始指定起始位置了,所以也不必担心查询速度。(这里有个前提,就是查询的方式应该是只读和游标仅向前的)
3、如果取的起始记录比较靠后,移到该位置时会有内存溢出的问题。这个在oracle中见过。这个问题是oracle驱动的问题,他的做法是每次next或absolute的时候,把所经历过的记录都读到内存中,当然就溢出了。解决办法是换个驱动即可。这在大型项目中的投资可以算不值一提的,而效率会有几十到几百倍的提高。小型项目一般不会有这样的问题,如果有也可通过改进sql语句来达到
那这样的效率上会不会有问题?
在一看,心里一凉。
仔细一看,完了......
为什么?
因为:楼主不是一个好的老师,且对问题研究不够深入,学了一半就开工。他说的Iterator没什么!关键是对jdbc中基本的东西没搞清楚。有一点我敢肯定,就是一旦真正的connection被关闭,ResultSet就不能用了。
他说的那种情况是因为真正的connection没被关闭,只是被指向了连接池。要是连接池中剩余的连接都被用了,他就会哭了。
在一想,还好!
为什么?
因为:我知道。
关于我以前说的connection不关闭,ResultSet是否使用我在另外一个帖子里已经澄清,这是MySQL JDBC的一个BUG。
目前,我的应用已经很少接触到ResultSet,我的关于数据库返回结果的设计只会在上层(设计模式或框架)上解决,也没有兴趣或无法在JDBC层来解决,这不是我的兴趣方向。