/** * Constructor for building custom-purpose EntityManager instances. For common * usecases, simply use {@code @Inject EntityManager em} and let the * {@link ErraiEntityManagerProducer} handle the prerequisites for you. */ public ErraiEntityManager( final ErraiMetamodel metamodel, final Map<String, TypedQueryFactory> namedQueries, final StorageBackendFactory storageBackendFactory) { this.metamodel = Assert.notNull(metamodel); this.namedQueries = Assert.notNull(namedQueries); this.persistenceContext = new PersistenceContext(metamodel); this.logger = LoggerFactory.getLogger(ErraiEntityManager.class); // Caution: we're handing out a reference to this partially constructed instance! this.backend = storageBackendFactory.createInstanceFor(this); }