我想知道在spring mvc + hibernate应用程序中添加fixtures用于开发目的的最佳方法是什么。基本上这个想法是当应用程序在“开发”环境中加载时,一定数量的灯具应该预填充数据库。需要注意的一点是,我不想使用DbUnit或加载硬编码的SQL,而是想使用实体管理器在应用程序内部生成固件,以便在需要时可以使用某些服务来生成信息(让说我想创建一些用户fixtues,id喜欢能够使用salt服务等来生成密码等)。理想情况下,我希望能够为每个域类型分开不同类别的灯具。到目前为止,我还没有找到有用的东西呢?我很感激任何帮助,请记住我是一个完整的Spring新手,来自PHP背景,所以请保留一些更详细的内容,告诉我应该去哪里:S。谢谢!Spring MVC(Spring roo)Hibernate fixture
0
A
回答
1
这是为了发展吗?不只是单元或集成测试?如果是这样的话,我想我只是用一个main创建一个Java类,并把你的数据创建代码放在那里。您也可以使该类自动连接数据填充bean。然后让所有数据填充器实现相同的界面。确保你的主要方法注释如下:
@ContextConfiguration("classpath:/META-INF/spring/applicationContext.xml")
这将基本上为您的静态主要方法加载弹簧配置。
然后,您可以让构建在擦除数据库后每次运行它,或者在需要填充数据时手动调用它。
如果这只是单元测试,那么我会在测试源路径中创建一个数据填充器,然后从您的测试#setUp方法中调用它。
考虑以下几点:
public interface Populator {
void run();
}
@Repository
public class UserPopulator {
@PersistenceContext
private EntityManager em;
@Transactional
public void run() {
create some users
em.persist(users);
}
}
@Repository
public class ThingPopulator {
@PersistenceContext
private EntityManager em;
@Transactional
public void run() {
create some thing
em.persist(thing);
}
}
@Configurable
@ContextConfiguration("classpath:/META-INF/spring/applicationContext.xml")
public class DataPopulator {
@Autowired
private List<Populator> populators;
public void run() {
for (Populator populator : populators) {
populator.run();
}
}
public static void main(String[] args) {
new DataPopulator().run();
}
}
然后你就可以运行这个类商发展。如果你有一个单元测试只为用户,你也可以这样做:
public class UserTest {
@Before
public void setUp() {
new UserPopulator().run();
}
// tests
}
或类似的东西。
相关问题
- 1. Spring Roo - Bypass Hibernate
- 2. Hibernate OrderColumn with Spring Roo
- 3. spring mvc hibernate - configuration
- 4. Spring mvc + hibernate + maven
- 5. Spring Roo的MVC:对象
- 6. Hibernate + Spring Mvc集成
- 7. Hibernate @Valid和Spring MVC
- 8. Hibernate聚合+ Spring MVC
- 9. Spring MVC + Hibernate Validator + Velocity
- 10. Spring mvc Hibernate集成
- 11. spring mvc,maven,hibernate java.lang.ClassNotFoundException:com.entity.Candidate
- 12. Hibernate QueryParameterException Spring MVC&JSON
- 13. Spring mvc jdbc和hibernate
- 14. Spring MVC i18n Hibernate Validation
- 15. hibernate查询编辑器(Spring roo项目)
- 16. Spring Roo的+ Hibernate的:在查询
- 17. 将Spring Roo中的Hibernate异常转换为Spring Data Access异常
- 18. Spring 3 Hibernate Spring MVC Arch类型
- 19. Oracle与Spring roo
- 20. spring(Roo)+ JCR(Jackrabbit ..)
- 21. Spring roo和jOOQ
- 22. Spring Roo和EhCache
- 23. Spring roo working
- 24. Spring ROO排序
- 25. Spring Roo“Base”URL
- 26. JSON PUT Spring Roo
- 27. Spring roo和GWT
- 28. Spring roo和gwt
- 29. Spring Roo,jQuery,jQueryMobile
- 30. Spring Roo和AOP
因此,基本上有2个不同的相同接口的集合,这个注释和类为主应用程序和测试路径中的不同灯具实现它?有没有什么办法可以分享它,所以我不必保持它的一个测试版本和一个应用程序本身的版本。另外在你的oppiion什么是利用Hibernate/Spring中的灯具最好的方法,因为我看到的主要是基于加载静态.sql文件,我认为这是非常不灵活的...... – Feras
嗯,我有我的应用程序数据作为实体,所以我不不需要.sql文件。我只有代码创建和持久化实体的填充。而你只需要一套。标记为@Repostiory,你可以在测试或静态主文件中使用它们。 –
@Feras我编辑了我的答案,给你更具体的方向。我希望这是你正在寻找的。 –