Кто-нибудь знает, существует ли какая-либо инфраструктура, способная вырезать коллекции 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);