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

休眠和可序列化实体

谢俊力
2023-03-14
问题内容

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

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

我是否只需要创建自己的框架就可以像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与SAP HANA内存数据库连接时遇到一些性能问题,该数据库不支持AUTO_INCREMENT(http://scn.sap.com/thread/3238906)。 因此,我将Hibernate设置为使用序列进行ID生成。 但是,当我插入大量记录(例如40000)时,Hibernate首先会生成ID。看起来像: 并且只有在生成所有ID之后,它才开始实际插入。

  • 问题内容: 我的数据库是Oracle,我的id列值是Oracle序列,此序列由触发器执行,因此,在插入每一行之前,此触发器使用此序列来获取id值。因此,我对应该在实体类中定义哪个id策略生成感到困惑。 要么 要么 真的很困惑,有人可以阐明这个话题吗?请清楚解释。 问题答案: 我还有一个projet,其中有一个Oracle DB将数据提供给我的@Entity类。如您所说,序列通过触发器生成表PK的I

  • 问题内容: 是否可以对 不是标识符/不是复合标识符一部分的 某些列使用DB序列? 我正在将hibernate用作jpa提供程序,并且我有一个表,其中包含一些生成的值(使用序列)的列,尽管它们不是标识符的一部分。 我想要的是使用序列为实体创建新值,其中序列的列 不是 主键(的一部分): 然后,当我这样做时: 该ID将被生成,但该属性也将由我的JPA提供程序生成。 为了清楚起见:我希望 Hiberna

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

  • 问题内容: 我正在尝试从使用Hibernate检索的数据库中序列化对象,而我只对对象的实际数据整体感兴趣(包括循环)。 现在,我一直在使用XStream,它似乎功能强大。XStream的问题在于,它对信息过于盲目。它可以按原样识别Hibernate的PersistentCollections,并包含所有Hibernate元数据。我不想序列化那些。 因此,有没有一种合理的方法可以从Persisten

  • 问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合