All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yammer.dropwizard.hibernate.HibernateBundle Maven / Gradle / Ivy

package com.yammer.dropwizard.hibernate;

import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;
import com.google.common.collect.ImmutableList;
import com.yammer.dropwizard.ConfiguredBundle;
import com.yammer.dropwizard.config.Bootstrap;
import com.yammer.dropwizard.config.Configuration;
import com.yammer.dropwizard.config.Environment;
import com.yammer.dropwizard.db.ConfigurationStrategy;
import com.yammer.dropwizard.db.DatabaseConfiguration;
import org.hibernate.SessionFactory;

public abstract class HibernateBundle implements ConfiguredBundle, ConfigurationStrategy {
    private SessionFactory sessionFactory;

    private final ImmutableList> entities;
    private final SessionFactoryFactory sessionFactoryFactory;

    protected HibernateBundle(Class... entities) {
        this(ImmutableList.copyOf(entities), new SessionFactoryFactory());
    }

    protected HibernateBundle(ImmutableList> entities,
                              SessionFactoryFactory sessionFactoryFactory) {
        this.entities = entities;
        this.sessionFactoryFactory = sessionFactoryFactory;
    }

    @Override
    public final void initialize(Bootstrap bootstrap) {
        bootstrap.getObjectMapperFactory().registerModule(new Hibernate4Module());
    }

    @Override
    public final void run(T configuration, Environment environment) throws Exception {
        final DatabaseConfiguration dbConfig = getDatabaseConfiguration(configuration);
        this.sessionFactory = sessionFactoryFactory.build(environment, dbConfig, entities);
        environment.addProvider(new UnitOfWorkResourceMethodDispatchAdapter(sessionFactory));
        environment.addHealthCheck(new SessionFactoryHealthCheck("hibernate",
                                                                 sessionFactory,
                                                                 dbConfig.getValidationQuery()));
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy