当前位置: 首页 > 面试题库 >

hibernate和可序列化实体

林星阑
2023-03-14
问题内容

有谁知道那里是否有一个能够从实体类中剥离Hibernate集合以使其可序列化的框架?我看了一下BeanLib,但它似乎只做实体的深层副本,而不允许我为实体类中的集合类型指定实现映射。BeanLib当前不适用于Hibernate
3.5和Spring
3(我确实修改了源代码并能够使其正常工作,但我不想这样做)。吉利德(Gilead)似乎是一个选择,但似乎颇具侵略性。我宁愿使用简单的深度复制框架,也不愿将另一个框架编织到我的实体和DAO类中。

我曾尝试将XStream与自定义CollectionConverter和MapConverter一起成功使用,但是……它是XStream,我真的不希望将实体转换为XML,然后再从内存中的XML转换回来。这是一个可怕的解决方案。

我是否只需要创建自己的框架,其行为就像XStream减去所有XML内容一样?

我的技术堆栈是:GWT 2.0.4,GWT-Dispatch,Spring 3.0.1和Hibernate 3.5.2。

我的XStream解决方案:

XStream xstream = new XStream();

xstream.addDefaultImplementation(java.util.ArrayList.class, org.hibernate.collection.PersistentList.class);
xstream.addDefaultImplementation(java.util.HashMap.class, org.hibernate.collection.PersistentMap.class); 
xstream.addDefaultImplementation(java.util.HashSet.class, org.hibernate.collection.PersistentSet.class);
xstream.addDefaultImplementation(java.util.ArrayList.class, org.hibernate.collection.PersistentBag.class);

Mapper mapper = xstream.getMapper();
xstream.registerConverter(new HibernateCollectionConverter(mapper));
xstream.registerConverter(new HibernateMapConverter(mapper));

String xml = xstream.toXML(entity);
Entity newEntity = (Entity) xstream.fromXML(xml);

问题答案:

推土机对此非常有效。只需将bean实例映射到其自身的副本即可。

obj = dozerBeanMapper.map(obj, obj.getClass());

在将实例映射到新实例时,Dozer会忽略用于集合的任何特定运行时实现,而是使用标准实现或您的类默认使用的任何实现。

我看了一下BeanLib,但它似乎只做实体的深层副本,而不允许我为实体类中的集合类型指定实现映射。

我很好奇,为什么对您的集合类型使用哪种实现很重要?由于这是最好的一个最佳实践的持久化类来指代ListSet等等,实际的实现不应该的问题,任何人谁消耗这些类-
他们只关心数据



 类似资料:
  • 我读过一些关于hibernate的话题 “如果实体实例作为分离对象通过值传递,例如通过会话bean的远程业务接口,则类必须实现可序列化接口。”(c) 我有:使用Hibernate的简单Spring MVC项目。我有MyEntityDataTable,并且可以通过应用程序中的用户编辑它。 > 用户向getMyEntity()发出请求,并获取空的MyEntity对象 然后在表单中他设置了所有需要的参数

  • 问题内容: 有谁知道那里是否有一个能够从实体类中剥离Hibernate集合以使其可序列化的框架?我看了一下BeanLib,但它似乎只做实体的深层副本,而不允许我为实体类中的集合类型指定实现映射。BeanLib当前不适用于Hibernate 3.5和Spring 3(我确实修改了源代码并能够使其正常工作,但我不想这样做)。吉利德(Gilead)似乎是一个选择,但它似乎具有侵入性。我宁愿使用简单的深度

  • 问题内容: 我继承了一个使用Hibernate 3.0连接到SQL Server数据库的Websphere Portal项目。 这个项目中大约有130个Hibernate表类。它们都实现了可序列化。它们均未声明serialVersionUID字段,因此Eclipse IDE对所有这些类均显示警告。 这些类是否真正需要实现Serializable? 如果是这样,是否有任何工具可以一次将生成的seri

  • 问题内容: 我继承了一个Websphere Portal项目,该项目使用Hibernate 3.0连接到SQL Server数据库。 这个项目中大约有130个Hibernate表类。它们都实现了可序列化。它们均未声明serialVersionUID字段,因此Eclipse IDE对所有这些类均显示警告。 这些类是否真正需要实现Serializable? 如果是这样,是否有任何工具可以一次将生成的s

  • 问题内容: 我在流程之前有这个: 然后在另一部分 为什么我收到ClassCastException? 问题答案: 最终我以这种方式工作:

  • 本文向大家介绍Java 序列化和反序列化实例详解,包括了Java 序列化和反序列化实例详解的使用技巧和注意事项,需要的朋友参考一下 Java 序列化和反序列化实例详解 在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列化,接受者将对象反序列化,下面就是一个很好的例子! 1.实体-Employee 2.SerializeHelper 3.测试类