IoC stands for inversion of control. There are several implementations for this like: * Spring * Seam * and lots of others Spring probably the most used one. Seam is coming up. Spring is chosen because it has a good track record and the team knows it. For the persistence layer, two types of configuration styles can be used * jpa style (at this moment not possible to use Hibernate search) * hibernate style (possible to use Hibernate Search) For the reasons mentioned the Spring configuration in Hibernate style is chosen.