Tag: dozer

Java:合并2个“bean”以生成一个新的bean

我需要从Bean1和Bean2获取所有字段和集合,有时应用一些业务逻辑,并生成Bean3(所有bean都是具有相当复杂图形的相同类型的hibernate / domain对象)。 有关如何做到这一点的任何想法? 过去做过类似的事吗? 我的想法: 推土机(http://dozer.sourceforge.net/) BeanUtils(http://commons.apache.org/beanutils/) 手动解决方案 还有其他很酷的解决方案? 有什么建议?

防止Dozer触发Hibernate延迟加载

我正在使用Spring事务,因此当POJO到DTO转换发生时,事务仍处于活动状态。 我想阻止Dozer触发延迟加载,以便隐藏的sql查询永远不会发生:所有提取都必须通过HQL显式完成(以获得对性能的最佳控制)。 这是一个好习惯(我无法在任何地方找到它)? 怎么安全地做? 我在DTO转换之前试过这个: PlatformTransactionManager tm = (PlatformTransactionManager) SingletonFactoryProvider.getSingletonFactory().getSingleton(“transactionManager”); tm.commit(tm.getTransaction(new DefaultTransactionDefinition())); 我不知道事务发生了什么,但Hibernate会话没有关闭,延迟加载仍然发生。 我试过这个: SessionFactory sf = (SessionFactory) SingletonFactoryProvider.getSingletonFactory().getSingleton(“sessionFactory”); sf.getCurrentSession().clear(); sf.getCurrentSession().close(); 它可以防止延迟加载,但是直接在应用程序层(在我的项目中称为“facade”)中操作会话是一种很好的做法吗? 我应该担心哪些消极副作用? (我已经看到涉及POJO – > DTO转换的测试无法再通过AbstractTransactionnalDatasource Spring测试类启动,因为这些类尝试触发对事务的回滚,该事务不再与活动会话相关联)。 我还尝试将传播设置为NOT_SUPPORTED或REQUIRES_NEW,但它重用当前的Hibernate会话,并不会阻止延迟加载。