这个解决方案还是有问题的,我测试过通过这种方式插入20万的数据量,还勉强能够接受,完成此操作我的PC耗时1分多钟,服务层的处理很快,慢还是慢在Spring的事务提交。
如果插入25万及以上的数据量时,就会出现内存溢出了!
re: 在Xmarks与中国互联网折腾的日子 潇湘振宇 2010-08-20 09:28
现在不需要这样设置就可以正常使用了。。。
@黄晨
这里需要注意的一点是,你在Hibernate Bundle中通过addAnnotatedClass添加这两个POJO,而这个是通过在SessionFactory Bean中配置,如果确定POJO的Bundle是Hibernate Bundle的Fragment的话,那应该是没问题的,但如果不是的话,那就需要确保在Hibernate Bundle的MANIFEST.MF文件中有Import-package这两个POJO所在的包。
关于mvn-pax-plugin插件,这里给出两个开发过程中常用的参数,如下:
<param>--vmOptions=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000</param>
<param>--repositories=+
http://scm.ops4j.org/repos/ops4j/projects/pax/runner-repository/</param>其中--vmOptions参数是指设置JVM的一些属性,如上所示开启远程Java调试。
而--repositories是pax自己的一个参数来着。有时候在用pax:provision命令时,其老是去访问网络下载或检测相关pax的包,浪费掉了我们开发人员宝贵的时间,加上这个参数后会好很多。
@zhangls
源码就在本篇的末尾,只是因为最近公司事忙,没有继续这系列文章的编写,将上面源码包导入到Eclipse中,再用Maven命令来编译打包安装后,再用mvn pax:provision的命令就可以启动这个OSGi web应用,只是系列文章中说到的用户登录的功能尚未实现。但那只是业务方面,整体的开发脚手架已经搭建起来了,运行也是没问题的。
如果对这里说到的运行的命令不懂,可以仔细阅读本系列前几篇文章。
确实挺不错,以前也弄过Jasperreport,而且一直在用,但总觉得其applet的打印方式实在笨重!
有时间也尝试一下下楼主说方式
多谢关注!昨天上午差不多完基于OSGi的Web应用开发系列三(构建项目框架),只是因为刚搬了家,而新租的房子那里还没有开通网络,需要过一两天才能发布!
re: 基于OSGi的Web应用开发系列一 潇湘振宇 2010-06-15 09:31
@临远
改造cglib的目的是为了正常使用Hibernate的延迟加载,Hibernate在创建代理的时候,因为OSGi的特殊性,每个Bundle拥有独立的一个ClassLoader(Fragment除外),cglib通过其AbstractClassGenerator.create方法创建对象时,先获取到相应的ClassLoader对象缓存起来,在延迟加载的时候再通过缓存起来的ClassLoader来加载指定的对象。但是cglib获取的默认ClassLoader对象是POJO所在的Bundle的ClassLoader对象,而通过此ClassLoader来加载HibernateProxy类,自然会出现NoClassDefFoundError之类的异常。这个问题在BlueDavy的OSGi进阶中有详细的说明。
在Hibernate这一层使用暴力反射让hibernate实现动态注册实体类这样的方法我觉得过于复杂,我觉得没必要这样做。我是通过Fragment来实现的。这样理解想来也容易。
很好,讲解的很详细。理念终归是理念,实际应用确实是需要视各各应用场景来定。始终相信“没有最好的设计,只有最合适的设计”。
加油:) 继续期待您的下篇博文。