Tag: spring data

Spring Data:服务层unit testing

在我的项目中,我在进行unit testing时遇到了麻烦。 一个问题是,只需进行集成测试就可以更快地编写并测试组件实际协同工作。 unit testing新颖的“算法”左右似乎更容易。 unit testing服务类它只是感觉错误和无用。 我正在使用mockito来模拟spring数据存储库(因此也就是DB访问)。 问题是如果我告诉模拟的存储库在方法调用getById上返回实体A,它显然会返回它,服务也将返回它。 是的,该服务做了一些额外的东西,但非常小的事情,如加载惰性集合(来自hibernate)。 显然我在unit testing中没有任何惰性集合(代理)。 例: @Test public void testGetById() { System.out.println(“getById”); TestCompound expResult = new TestCompound(id, “Test Compound”, “9999-99-9”, null, null, null); TestCompoundRepository mockedRepository = mock(TestCompoundRepository.class); when(mockedRepository.findOne(id)).thenReturn(expResult); ReflectionTestUtils.setField(testCompoundService, “testCompoundRepository”, mockedRepository, TestCompoundRepository.class); TestCompound result = testCompoundService.getById(id); assertEquals(expResult, result); } 万岁,其余的都成功了。 多么惊喜! 不是真的没有。 有人可以向我解释我做错了什么吗? 或者这样一个测试的重点是什么? 我的意思是我告诉返回expResult然后它返回。 哇。 多么惊喜! 感觉就像我在测试mockito是否有效而不是我的服务。 […]

MongoDB的Java ORM开销是多少

使用Java ORM for MongoDB的开销是多少,或者我们在基本驱动程序级别读取或写入更好? 我们将根据我们的要求添加Mongo DB。 java有几种java ORM映射工具 -morphia -spring数据 – 其他人 Morphia上一版本在一年多前发布 但Spring数据得到了积极维护。 如果我即将开始,应该使用哪一个,

如何记录Spring Data JPA存储库方法的执行时间?

我有简单的Spring Data JPA存储库。 public interface UserRepository extends JpaRepository{ … } 有没有办法监视Spring生成的方法的执行时间(例如findOne(…) )?

如何在Spring Data中精美地更新JPA实体?

所以我查看了有关使用Spring Data的JPA的各种教程,这在很多场合都有所不同,我不太确定正确的方法是什么。 假设有以下实体: package stackoverflowTest.dao; import javax.persistence.*; @Entity @Table(name = “customers”) public class Customer { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “id”) private long id; @Column(name = “name”) private String name; public Customer(String name) { this.name = name; } public Customer() { } public long getId() { return id; } public String getName() { return […]

PersistenceAnnotationBeanPostProcessor是否可以使用?

根据其JavaDoc,PersistenceAnnotationBeanPostProcessor似乎负责使用注释@PersistenceContext注入EntityManager。 它似乎暗示如果没有在Spring应用程序上下文xml中声明这个bean,@ PerersContext注释将不起作用。 但是,根据我的实验,这不是事实。 persistence.xml中 Spring应用程序上下文XML <!– –> 在UserDAOImpl @Repository(“userDao”) public class UserDaoImpl implements UserDao { @PersistenceContext protected EntityManager entityManager; @Transactional public void save(User user) { entityManager.persist(user); } } 无论我是注释还是取消注释persistenceAnnotation bean,结果都是一样的。 留下豆子并没有什么坏处,但是这种豆的用途是什么? 我使用的是Spring 3.0.5。 有人可以提供一个场景,取出这个bean会导致失败吗? 另外,我不喜欢创建一个空的持久性单元来愚弄Spring。 幸运的是,这个问题已在Spring 3.1.0中得到解决。

如何检索给定域类的spring数据存储库实例?

给出某些类Bar中所有spring数据存储库的列表: @Autowired private List repositories; 如何在上面的列表中找到现有域类Foo的存储库? 假设存在以下内容: @Entity public class Foo { … } 和 public interface FooRepository extends JpaRepository {}

如何在Spring-data-rest中将Page 映射到Page

当我使用PagingAndSortingRepository.findAll(Pageable)访问数据库时,我得到Page 。 但是,我想将DTO暴露给客户端而不是实体。 我可以通过将实体注入到它的构造函数中来创建DTO,但是如何将Page对象中的实体映射到DTO? 根据spring文档,Page提供了只读操作。 另外,Page.map不可能,因为我们不支持java 8.如何手动创建带有映射对象的新页面?

如何在不使用查询缓存的情况下缓存Spring Data JPA查询方法的结果?

我有一个带有Spring Data JPA(hibernate后端)存储库类的Spring Boot应用程序。 我添加了一些自定义查找器方法,其中一些使用特定的@Query注释来告诉它如何获取数据。 我已经为hibernate二级缓存设置了EhCache,但到目前为止,我可以获得这些结果缓存的唯一方法是启用hibernate查询缓存。 我更喜欢定义一个特定的缓存并将实际的域对象存储在那里,就像它是一个普通的查找程序一样。 以下是我的回购代码: public interface PromotionServiceXrefRepository extends PagingAndSortingRepository { @Query(“SELECT psx FROM Customer c ” + “JOIN c.customerProductPromotions cpp ” + “JOIN cpp.productPromotion pp ” + “JOIN pp.promotion p JOIN p.promotionServiceXrefs psx ” + “WHERE c.customerId = ?1”) @QueryHints(@QueryHint(name = “org.hibernate.cacheable”, value = “true”)) @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = “promotionServiceXrefByCustomerId”) […]

Hibernate:如何确保父项的所有子实体都不被删除?

我正在删除entities ,因此从我的数据库中删除行。 我确实想要删除某个实体及其所有child行。 但是,我不想从其Parent删除任何行。 我怎么能做到这一点? Kennel是Parent Entity , Dog是我要删除的实体。 请参阅下面的代码,了解我如何在Kennel实体中链接2: @OneToMany(cascade = CascadeType.MERGE, orphanRemoval = false) @JoinColumn(name = “KENNEL_ID”, referencedColumnName = “ID”, updatable = true, insertable = true) private Set dogs; 目前,当我删除狗权利时,其相关的Kennel实体也将被删除。 编辑:狗到狗窝的映射: @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = “KENNEL_ID”) private kennel kennel;

Spring Dependency Injection入JPA实体监听器

我需要将一个Springdependency injection到JPA实体监听器中。 我知道我可以使用@Configurable和Spring的AspectJ weaver作为javaagent解决这个问题,但这似乎是一个hacky解决方案。 有没有其他方法可以完成我想要做的事情?