锁定老帖子 主题:技术选型带来的困扰
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-05
楼主那一段hibernate 的写法,是一个插件写好的,
这一段并无什么问题。 不这样写, 也是类似的写法。 Session sess = getSession(); return sess.createSql("from Employee ").list(); 这个问题确实是这样, 如果你全取表。 用jdbc 就不会产生异常。 而用hibernate 就会产生异常。 但是,如果两面都不异常, 你用工具测 > 3次, hibernate 时间又快! 你可以设一下内存max值看一看。 这个东西和hibernate 分配内存,JAVA 分配内存的机制有关。 为什么 eclipse 有的时候也会内存不足,而异常掉呢?? 好象也是这么回事。 这坛子上关于JAVA虚拟机的高手,实在太多, 我就不好发表这方面的意见了。 只是我以前跟踪调试过这样的东西。 |
|
返回顶楼 | |
发表时间:2008-05-05
Godlikeme 写道 AX400? AS400?
用10万条来做性能测试,靠谱么?是不是数据量太小了点。至少要百万往上吧。 不太明白为什么struts+hibernate会outof memory, 10万条都取出来也没多少内容。>100M? 这么点数据查询就这么慢,数据库有问题吧,或者代码逻辑有问题。 我觉得有几方面比较关键, 新的数据模型如何能够兼容旧模型又能满足业务要求。 数据如何移植,从旧数据模型映射到新数据模型中。 关键数据 数据量有多大。 我原来用Spring+hibernate也就碰到过outof memory问题,这个主要是没有分页导致的。 一次性取10W条记录不使用分页肯定会出问题的。 |
|
返回顶楼 | |
发表时间:2008-05-05
从DB2向Oracle迁移?如果这样的话,建议数据持久化用Hibernate,统计等大数据操作可以使用PL/SQL,速度要快很多。当然,如果你非要考虑数据库的可移植性等等问题,那么PL/SQL可能并不适合你
|
|
返回顶楼 | |
发表时间:2008-05-05
ibatis推荐, 迁移并不意味就有能力把老数据表,切分,OO化
|
|
返回顶楼 | |
发表时间:2008-05-05
考虑数据库移植的话最好使用hibernate,而且hibernate性能会更好
LZ如果使用可以使用这个JdbcTemplate的话可以考虑这个,spring 2.5新加的功能,不用写rowMapper了 ParameterizedBeanPropertyRowMapper.newInstance(Owner.class)具体参考spring自带的例子 可以考虑结合使用JdbcTemplate和hibernate |
|
返回顶楼 | |
发表时间:2008-05-05
和什么技术实现没多大关系吧,你数据量大。然道每次操作都要操作30年的数据?
|
|
返回顶楼 | |
发表时间:2008-05-05
fight_bird 写道 Godlikeme 写道 fight_bird 写道 涉及遗留数据库用ibatis为好
你这个用例太难得了,希望能多交流。 能不能详细说明下,什么样的情况下 涉及遗留系统用ibatis好,好处在什么地方? 遗留系统一般以数据库为核心,很多系统的数据库表设计并不符合OO设计的原则,如出于性能考虑而出现的大聚合表:用单表的若干组字段代替若干个主从表结构。 举个大聚合表的实例:一个税务系统的纳税人缴款单表,10年前基于PB设计的sybase库,一个表有230多个字段,包含纳税人信息、30多个税种交欠数据、滞纳金信息、税种退税规则设定......,用Hibernate来处理会很别扭,用ibatis就方便得多。 虽说真正符合关系数据库设计原则的表设计并不和OO映射矛盾,但对于遗留系统,在当时有很多的理由采取各种非正规的表设计方式:大聚合表、离散表、多重冗余,对于这些表,sql层面的灵活性就十分重要! 大大能不能详细说说iBatis和Hibernate在处理这种情况下有什么不一样 |
|
返回顶楼 | |
发表时间:2008-05-05
dearmite 写道 这坛子上关于JAVA虚拟机的高手,实在太多, 我就不好发表这方面的意见了。 只是我以前跟踪调试过这样的东西。 感觉JVM高手这里的确多 呵呵 但是往往接着问个问题就甩一句google...其实很多时候我在提问前google过好半天了 就是因为找不到满意的资料才上JE问得 结果屡次被B4...-_- 能不能说说怎么跟踪到JVM里面去? |
|
返回顶楼 | |
发表时间:2008-05-05
yuankai 写道 Godlikeme 写道 AX400? AS400?
用10万条来做性能测试,靠谱么?是不是数据量太小了点。至少要百万往上吧。 不太明白为什么struts+hibernate会outof memory, 10万条都取出来也没多少内容。>100M? 这么点数据查询就这么慢,数据库有问题吧,或者代码逻辑有问题。 我觉得有几方面比较关键, 新的数据模型如何能够兼容旧模型又能满足业务要求。 数据如何移植,从旧数据模型映射到新数据模型中。 关键数据 数据量有多大。 我原来用Spring+hibernate也就碰到过outof memory问题,这个主要是没有分页导致的。 一次性取10W条记录不使用分页肯定会出问题的。 会不会outof memory由数据量大小而定, 以lz所说employee表,暂定单条记录为1k,(一般系统的主信息档也不过这个量级),10w记录大约在100M。预估Hibernate使用的内存容量<120M。 这是我说不太明白内存会溢出的原因。 从后面的代码可以看出,lz用不同技术的查询条件是不一样的,这样带来的问题是不具有可比性。 在我看来这样的性能比较,无论从数据量,还是从对比的实现上看参考意义都不大。 建议还是更多的在数据模型基本建立,数据移植方案明确的情况下再对比不同技术的技术风险。 |
|
返回顶楼 | |
发表时间:2008-05-05
建议分页再进行测试
不过大数据量分页还是用sql分页比较好,ibatis好像是取出来以后再sublist的 |
|
返回顶楼 | |