山那边是海 发表于 2015-1-18 11:06:07

发布一篇利用静态代办署理办理Hibernate序列化,制止提早加载成绩

Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)
在利用Ajax:HibernateEntity=>json,FlexRemoteObject:HibernateEntity=>ActionScriptObject的历程,常常碰着以下成绩:
成绩:
1.Hibernate碰着提早加载的属性会见时假如session被封闭则抛出LazyInitializationException
2.Hibernate中的one-to-many等联系关系干系在序列化时假如没有把持,则将全部数据库都有大概被全体序列化
3.过量的利用DTO/ValueObject办理这个成绩.
办理举措:
对Entity对象天生一个静态代办署理,拦阻getXXXX()办法,假如会见的是提早加载的属性,则returnnull,而不抛出LazyInitializationException,递回天生属性的代办署理,只需碰着未提早加载的属性,而序列化会主动中断.制止将全部Entity序列化传布,招致大概序列化全部数据库的成绩.
相似办理计划:
dwr中HibernateConverter,在序列化时如上相似,碰着提早加载的属性主动停止convert事情.而HibernateBeanSerializer则与日俱增,不管object=>json都能够事情.
利用用例:
Java代码
//role为原始对象
role=(Role)roleDao.getById(new Long(1));
//天生的静态代办署理proxyRole,会见提早加载的属性将returnnull
RoleproxyRole=(Role)new HibernateBeanSerializer<Role>(role).getProxy();
assertNotNull(role.getResource());
assertNull(proxyRole.getResource()); //提早加载,为null
Hibernate.initialize(role.getResource()); //抓取出去  
assertNotNull(proxyRole.getResource()); //不为null
//role为原始对象
role=(Role)roleDao.getById(newLong(1));
//天生的静态代办署理proxyRole,会见提早加载的属性将returnnull
RoleproxyRole=(Role)newHibernateBeanSerializer<Role>(role).getProxy();
assertNotNull(role.getResource());
assertNull(proxyRole.getResource());//提早加载,为null
Hibernate.initialize(role.getResource());//抓取出去
assertNotNull(proxyRole.getResource());//不为null
<p>
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。

变相怪杰 发表于 2015-1-20 14:24:20

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

透明 发表于 2015-1-21 15:15:19

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

海妖 发表于 2015-1-24 11:30:52

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

若相依 发表于 2015-1-26 10:22:35

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

只想知道 发表于 2015-2-4 13:48:43

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

活着的死人 发表于 2015-2-10 00:58:47

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

飘灵儿 发表于 2015-2-28 10:20:42

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

爱飞 发表于 2015-3-9 22:16:28

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

莫相离 发表于 2015-3-17 02:10:37

是一种使用者不需花费很多时间学习的语言

深爱那片海 发表于 2015-3-23 15:40:39

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页: [1]
查看完整版本: 发布一篇利用静态代办署理办理Hibernate序列化,制止提早加载成绩