Example usage for org.hibernate.cfg Configuration addAnnotatedClass

List of usage examples for org.hibernate.cfg Configuration addAnnotatedClass

Introduction

In this page you can find the example usage for org.hibernate.cfg Configuration addAnnotatedClass.

Prototype

@SuppressWarnings({ "unchecked" })
public Configuration addAnnotatedClass(Class annotatedClass) 

Source Link

Document

Read metadata from the annotations associated with this class.

Usage

From source file:at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider.java

License:EUPL

/**
 * Load the configuration data from XML file with the given name and build
 * the internal data structures representing the MOA ID configuration.
 * //from   ww w.  j  a  v a2 s  .  c  om
 * @param fileName The name of the XML file to load.
 * @throws ConfigurationException The MOA configuration could not be
 * read/built.
 */
private void load(String fileName) throws ConfigurationException {

    try {
        //Initial Hibernate Framework
        Logger.trace("Initializing Hibernate framework.");

        //Load MOAID-2.0 properties file
        File propertiesFile = new File(fileName);
        FileInputStream fis = null;
        props = new Properties();

        // determine the directory of the root config file
        rootConfigFileDir = new File(fileName).getParent();

        try {
            rootConfigFileDir = new File(rootConfigFileDir).toURL().toString();

        } catch (MalformedURLException t) {
            throw new ConfigurationException("config.03", null, t);
        }

        try {
            fis = new FileInputStream(propertiesFile);
            props.load(fis);

            // read MOAID Session Hibernate properties
            Properties moaSessionProp = new Properties();
            for (Object key : props.keySet()) {
                String propPrefix = "moasession.";
                if (key.toString().startsWith(propPrefix + "hibernate")) {
                    String propertyName = key.toString().substring(propPrefix.length());
                    moaSessionProp.put(propertyName, props.get(key.toString()));
                }
            }

            // read Config Hibernate properties
            Properties configProp = new Properties();
            for (Object key : props.keySet()) {
                String propPrefix = "configuration.";
                if (key.toString().startsWith(propPrefix + "hibernate")) {
                    String propertyName = key.toString().substring(propPrefix.length());
                    configProp.put(propertyName, props.get(key.toString()));
                }
            }

            // read advanced logging properties
            Properties statisticProps = new Properties();
            for (Object key : props.keySet()) {
                String propPrefix = "advancedlogging.";
                if (key.toString().startsWith(propPrefix + "hibernate")) {
                    String propertyName = key.toString().substring(propPrefix.length());
                    statisticProps.put(propertyName, props.get(key.toString()));
                }
            }

            // initialize hibernate
            synchronized (AuthConfigurationProvider.class) {

                //Initial config Database
                ConfigurationDBUtils.initHibernate(configProp);

                //initial MOAID Session Database
                Configuration config = new Configuration();
                config.addAnnotatedClass(AssertionStore.class);
                config.addAnnotatedClass(AuthenticatedSessionStore.class);
                config.addAnnotatedClass(OASessionStore.class);
                config.addAnnotatedClass(OldSSOSessionIDStore.class);
                config.addAnnotatedClass(ExceptionStore.class);
                config.addAnnotatedClass(InterfederationSessionStore.class);
                config.addAnnotatedClass(ProcessInstanceStore.class);
                config.addProperties(moaSessionProp);
                MOASessionDBUtils.initHibernate(config, moaSessionProp);

                //initial advanced logging
                if (isAdvancedLoggingActive()) {
                    Logger.info("Advanced statistic log is activated, starting initialization process ...");
                    Configuration statisticconfig = new Configuration();
                    statisticconfig.addAnnotatedClass(StatisticLog.class);
                    statisticconfig.addProperties(statisticProps);
                    StatisticLogDBUtils.initHibernate(statisticconfig, statisticProps);
                    Logger.info("Advanced statistic log is initialized.");
                }

            }
            Logger.trace("Hibernate initialization finished.");

        } catch (FileNotFoundException e) {
            throw new ConfigurationException("config.03", null, e);

        } catch (IOException e) {
            throw new ConfigurationException("config.03", null, e);

        } catch (ExceptionInInitializerError e) {
            throw new ConfigurationException("config.17", null, e);

        } finally {
            if (fis != null)
                fis.close();

        }

        //Initialize OpenSAML for STORK
        Logger.info("Starting initialization of OpenSAML...");
        MOADefaultBootstrap.bootstrap();
        //DefaultBootstrap.bootstrap();
        Logger.debug("OpenSAML successfully initialized");

        String legacyconfig = props.getProperty("configuration.xml.legacy");
        String xmlconfig = props.getProperty("configuration.xml");
        //      String xmlconfigout = props.getProperty("configuration.xml.out");

        //configure eGovUtils client implementations

        //read eGovUtils client configuration
        Properties eGovUtilsConfigProp = new Properties();
        for (Object key : props.keySet()) {
            String propPrefix = "service.";
            if (key.toString().startsWith(propPrefix + "egovutil")) {
                String propertyName = key.toString().substring(propPrefix.length());
                eGovUtilsConfigProp.put(propertyName, props.get(key.toString()));
            }
        }
        if (!eGovUtilsConfigProp.isEmpty()) {
            Logger.info("Start eGovUtils client implementation configuration ...");
            eGovUtilsConfig = new EgovUtilPropertiesConfiguration(eGovUtilsConfigProp, rootConfigFileDir);
        }

        //check if XML config should be used
        if (MiscUtil.isNotEmpty(legacyconfig) || MiscUtil.isNotEmpty(xmlconfig)) {
            Logger.warn(
                    "WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
            moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
            if (moaidconfig != null)
                ConfigurationDBUtils.delete(moaidconfig);

            List<OnlineApplication> oas = ConfigurationDBRead.getAllOnlineApplications();
            if (oas != null && oas.size() > 0) {
                for (OnlineApplication oa : oas)
                    ConfigurationDBUtils.delete(oa);
            }
        }

        //load legacy config if it is configured
        if (MiscUtil.isNotEmpty(legacyconfig)) {
            Logger.warn(
                    "WARNING! MOA-ID 2.0 is started with legacy configuration. This setup is not recommended!");

            MOAIDConfiguration moaconfig = BuildFromLegacyConfig.build(new File(legacyconfig),
                    rootConfigFileDir, null);

            List<OnlineApplication> oas = moaconfig.getOnlineApplication();
            for (OnlineApplication oa : oas)
                ConfigurationDBUtils.save(oa);

            moaconfig.setOnlineApplication(null);
            ConfigurationDBUtils.save(moaconfig);

            Logger.info("Legacy Configuration load is completed.");

        }

        //load MOA-ID 2.x config from XML
        if (MiscUtil.isNotEmpty(xmlconfig)) {
            Logger.warn("Load configuration from MOA-ID 2.x XML configuration");

            try {
                JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config");
                Unmarshaller m = jc.createUnmarshaller();
                File file = new File(xmlconfig);
                MOAIDConfiguration moaconfig = (MOAIDConfiguration) m.unmarshal(file);
                //ConfigurationDBUtils.save(moaconfig);

                List<OnlineApplication> importoas = moaconfig.getOnlineApplication();
                for (OnlineApplication importoa : importoas) {
                    ConfigurationDBUtils.saveOrUpdate(importoa);
                }

                moaconfig.setOnlineApplication(null);
                ConfigurationDBUtils.saveOrUpdate(moaconfig);

            } catch (Exception e) {
                Logger.warn("MOA-ID XML configuration can not be loaded from File.", e);
                throw new ConfigurationException("config.02", null);
            }
            Logger.info("XML Configuration load is completed.");
        }

        reloadDataBaseConfig();

    } catch (Throwable t) {
        throw new ConfigurationException("config.02", null, t);
    }
}

From source file:at.oculus.teamf.databaseconnection.session.HibernateSessionBroker.java

License:Open Source License

/**
 * Creates a new {@code #HibernateSessionBroker}
 *
 * @param clazzes annotated classes to configure the hibernate session factory
 *///from   w w  w. j  ava2  s .c o  m
public HibernateSessionBroker(Collection<Class> clazzes) {
    Configuration configuration = new Configuration();

    HibernateProperties ph = new HibernateProperties("config.properties");

    configuration.setProperty("hibernate.connection.url", ph.getURL());
    configuration.setProperty("hibernate.connection.driver_class", ph.getDriver());
    configuration.setProperty("hibernate.connection.username", ph.getUser());
    configuration.setProperty("hibernate.connection.password", ph.getPassword());

    _clazzes = clazzes;
    for (Class clazz : clazzes) {
        configuration.addAnnotatedClass(clazz);
    }

    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
            .buildServiceRegistry();
    _sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    //reason for the double connection!
    Map<String, Object> configOverrides = new HashMap<String, Object>();
    configOverrides.put("hibernate.connection.url", ph.getURL());
    configOverrides.put("hibernate.connection.driver_class", ph.getDriver());
    configOverrides.put("hibernate.connection.username", ph.getUser());
    configOverrides.put("hibernate.connection.password", ph.getPassword());
    _entityManagerFactory = Persistence.createEntityManagerFactory("oculus_f", configOverrides);
}

From source file:at.stefanproell.PersistentIdentifierMockup.HibernateSchemaGeneratorPID.java

License:Apache License

public static void main(String[] args) {

    String outputFilePath = "PersistentIdentification/additional_configuration/PID-Hibernate-schema.sql";

    Configuration config = new Configuration();
    config.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
    config.addAnnotatedClass(PersistentIdentifier.class);
    config.addAnnotatedClass(Organization.class);
    SchemaExport export = new EnversSchemaGenerator(config).export().setOutputFile(outputFilePath);
    export.setDelimiter(";");
    export.execute(true, false, false, false);

    // Update Schema
    //updateSchema(config);
}

From source file:at.treedb.db.hibernate.DAOhibernate.java

License:Open Source License

@SuppressWarnings("rawtypes")
private static ArrayList<Class> loadEnitiyClasses(String[] list, Configuration cfg) throws Exception {
    HashSet<String> set = new HashSet<String>();
    ArrayList<Class> annotations = new ArrayList<Class>();
    for (int i = 0; i < list.length; ++i) {
        int pos = list[i].lastIndexOf(".");
        if (pos != -1) {
            String p = list[i].substring(0, pos);
            if (!set.contains(p)) {
                set.add(p);/* www . ja v a  2 s  .  c o m*/
                cfg.addPackage(p);
            }
        }
        Class c = Class.forName(list[i]);
        cfg.addAnnotatedClass(c);
        annotations.add(c);
    }
    return annotations;
}

From source file:br.com.chamado.util.HibernateConfiguracao.java

public void criaSessionFactory() {
    Configuration configuracao = new Configuration();

    configuracao.addAnnotatedClass(Log.class);
    configuracao.addAnnotatedClass(Chamadoc.class);
    configuracao.addAnnotatedClass(Grupo.class);
    configuracao.addAnnotatedClass(GrupoPagina.class);
    configuracao.addAnnotatedClass(Mensagem.class);
    configuracao.addAnnotatedClass(Pagina.class);
    configuracao.addAnnotatedClass(Unidade.class);
    configuracao.addAnnotatedClass(Usuario.class);
    configuracao.addAnnotatedClass(EmailConfig.class);
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuracao.getProperties())
            .build();/*from   w w w  . j  av a 2s.  c o  m*/

    sessionFactory = configuracao.buildSessionFactory(serviceRegistry);

}

From source file:br.com.sinax.musicpoc.Bootstrap.java

License:Apache License

/**
 * Builds the persistance.//from  ww w .  j a  v  a2s .c om
 */
private void buildPersistance() {

    // Build Hibernate Configuration
    Configuration configuration = new Configuration();

    configuration.addAnnotatedClass(Music.class);
    configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver");
    configuration.setProperty("hibernate.connection.url", "jdbc:h2:mem:test_mem;");
    configuration.setProperty("hibernate.connection.username", "");
    configuration.setProperty("hibernate.connection.password", "");
    configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
    configuration.setProperty("hibernate.hbm2ddl.auto", "update");
    configuration.setProperty("hibernate.show_sql", "true");
    configuration.setProperty("hibernate.connection.pool_size", "3");

    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
            .applySettings(configuration.getProperties());
    SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());

    // Registry on Container
    registryComponent(MusicDaoImpl.class);
    registryComponent(new HibernateSessionProviderImpl(sessionFactory));
}

From source file:br.gov.jfrj.siga.hibernate.ExDao.java

License:Open Source License

static private void configurarHibernate(Configuration cfg) throws Exception {

    cfg.addClass(br.gov.jfrj.siga.ex.ExMobil.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExDocumento.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExFormaDocumento.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExConfiguracao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExSituacaoConfiguracao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExClassificacao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExModelo.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTemporalidade.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoDespacho.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoDestinacao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoDocumento.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExNivelAcesso.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExEstadoDoc.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExPreenchimento.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoFormaDoc.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoMovimentacao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExVia.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExMovimentacao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTpDocPublicacao.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExTipoMobil.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExBoletimDoc.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExPapel.class);
    cfg.addClass(br.gov.jfrj.siga.ex.ExEmailNotificacao.class);
    cfg.addClass(br.gov.jfrj.siga.dp.CpTipoMarcador.class);
    cfg.addClass(br.gov.jfrj.siga.dp.CpMarcador.class);
    cfg.addClass(br.gov.jfrj.siga.dp.CpTipoMarca.class);

    cfg.addAnnotatedClass(br.gov.jfrj.siga.ex.ExMarca.class);
    cfg.addAnnotatedClass(br.gov.jfrj.siga.dp.CpMarca.class);

    // cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExClassificacao",
    // "read-only", "ex");
    // cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExConfiguracao",
    // "read-only", "ex");
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExEstadoDoc", "read-only", CACHE_EX);
    //cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExFormaDocumento",
    //   "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExNivelAcesso", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExSituacaoConfiguracao", "read-only", CACHE_EX);
    // cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTemporalidade",
    // "read-only", "ex");
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoDespacho", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoDestinacao", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoDocumento", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTpDocPublicacao", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoMovimentacao", "read-only", CACHE_EX);
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoFormaDoc", "read-only", CACHE_EX);
    // cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExVia",
    // "read-only", "ex");
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoMobil", "read-only", CACHE_EX);
    cfg.setCollectionCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExTipoDocumento.exFormaDocumentoSet",
            "read-only", CACHE_EX);

    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.dp.CpTipoMarca", "nonstrict-read-write", "corporativo");
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.dp.CpTipoMarcador", "nonstrict-read-write",
            "corporativo");
    cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.dp.CpMarcador", "nonstrict-read-write", "corporativo");

    CacheManager manager = CacheManager.getInstance();
    Cache cache;//from   ww  w .j  a v a2  s . c  o  m
    CacheConfiguration config;

    if (!manager.cacheExists(CACHE_EX)) {
        manager.addCache(CACHE_EX);
        cache = manager.getCache(CACHE_EX);
        config = cache.getCacheConfiguration();
        config.setTimeToIdleSeconds(3600);
        config.setTimeToLiveSeconds(36000);
        config.setMaxElementsInMemory(10000);
        config.setMaxElementsOnDisk(1000000);
    }

    // cfg.setCollectionCacheConcurrencyStrategy(
    // "br.gov.jfrj.siga.ex.ExClassificacao.exViaSet", "read-only",
    // "ex");
    // cfg.setCollectionCacheConcurrencyStrategy(
    // "br.gov.jfrj.siga.ex.ExFormaDocumento.exModeloSet",

    // "nonstrict-read-write", "ex");
    // cfg.setCacheConcurrencyStrategy("br.gov.jfrj.siga.ex.ExModelo",
    // "nonstrict-read-write", "ex");

    // Hibernate search configuration
    //
    if ("true".equals(SigaExProperties.getString("siga.lucene.ativo"))) {
        cfg.setProperty("hibernate.search.default.directory_provider",
                "org.hibernate.search.store.FSDirectoryProvider");
        cfg.setProperty("hibernate.search.default.indexBase",
                SigaExProperties.getString("siga.lucene.index.path") + "/siga-ex-lucene-index/");
        cfg.setProperty("hibernate.search.default.optimizer.operation_limit.max", "2000");
        cfg.setProperty("org.hibernate.worker.execution", "sync");
        cfg.setProperty("org.hibernate.worker.batch_size", "1000");
        cfg.setProperty("hibernate.search.indexing_strategy", "manual");
        //            cfg.getEventListeners()
        //            .setPostUpdateEventListeners(
        //                  new PostUpdateEventListener[] { (PostUpdateEventListener) ReflectHelper
        //                        .classForName(
        //                              "org.hibernate.search.event.FullTextIndexEventListener")
        //                              .newInstance() });
        //            cfg.getEventListeners()
        //            .setPostInsertEventListeners(
        //                  new PostInsertEventListener[] { (PostInsertEventListener) ReflectHelper
        //                        .classForName(
        //                              "org.hibernate.search.event.FullTextIndexEventListener")
        //                              .newInstance() });
        //            cfg.getEventListeners()
        //            .setPostDeleteEventListeners(
        //                  new PostDeleteEventListener[] { (PostDeleteEventListener) ReflectHelper
        //                        .classForName(
        //                              "org.hibernate.search.event.FullTextIndexEventListener")
        //                              .newInstance() });
    } else {
        cfg.setProperty("hibernate.search.autoregister_listeners", "false");
    }

}

From source file:br.gov.jfrj.siga.model.dao.HibernateUtil.java

License:Open Source License

public static Configuration criarConfiguracao(String resource, Class<?>... classesAnotadas) {

    Configuration conf = new Configuration();

    for (Class<?> clazz : classesAnotadas) {
        conf.addAnnotatedClass(clazz);
    }/*www .  j a v a 2 s .  c o m*/

    // conf.addResource(resource);
    conf.configure(resource);

    return conf;
}

From source file:ch.icclab.cyclops.persistence.HibernateConfiguration.java

License:Open Source License

public static Configuration createConfiguration(HibernateCredentials credentials) {
    Configuration conf = new Configuration();

    // add mandatory hibernate classes
    conf.addAnnotatedClass(LatestPullORM.class);
    conf.addAnnotatedClass(CumulativeMeterUsage.class);

    // now set properties
    conf.setProperty("hibernate.connection.driver_class", credentials.getHibernateDriver())
            .setProperty("hibernate.connection.url", credentials.getHibernateURL())
            .setProperty("hibernate.connection.username", credentials.getHibernateUsername())
            .setProperty("hibernate.connection.password", credentials.getHibernatePassword())
            .setProperty("hibernate.dialect", credentials.getHibernateDialect())
            .setProperty("hibernate.hbm2ddl.auto", "update").setProperty("show_sql", "false");

    return conf;//w w  w. j ava 2s.  c  o  m
}

From source file:cn.json.quicknCore.common.AbstractApplication.java

public void hibernateInit() {
    Properties properties = new Properties();
    Configuration cfg = new Configuration();
    // add model class to configuration.
    ArrayList<Class<?>> models = QuickUtils.getPackageClasses(Setting.packageRoot + ".model", null,
            Entity.class);
    models.addAll(QuickUtils.getPackageClassInJar(Setting.webRoot + "WEB-INF/lib/quick.jar",
            Setting.packageRoot + ".model", null, Entity.class));
    for (Plugin plugin : Setting.plugins) {
        if (plugin.getModels() != null)
            models.addAll(plugin.getModels());
    }/* ww  w.j  a  va2s  .  c o m*/
    for (Class<?> model : models) {
        cfg.addAnnotatedClass(model);
    }

    models = getModels();
    if (models != null) {
        for (Class<?> model : models) {
            cfg.addAnnotatedClass(model);
        }
    }

    // dialectjdbcjdbc?mysqlinnodb for
    // mysql5dialect???
    if (Setting.dialect != null && Setting.dialect.length() > 0)
        properties.put("hibernate.dialect", Setting.dialect);
    else
        properties.put("hibernate.dialect", QuickUtils.getDialectByDriver(Setting.jdbcDriver));
    properties.put("hibernate.connection.driver_class", Setting.jdbcDriver);
    properties.put("hibernate.connection.url", Setting.jdbcUrl);
    properties.put("hibernate.connection.username", Setting.jdbcUser);
    properties.put("hibernate.connection.password", Setting.jdbcPassword);
    properties.put("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider");
    properties.put("hibernate.c3p0.min_size", Setting.initActive + "");
    properties.put("hibernate.c3p0.max_size", Setting.maxActive + "");
    properties.put("hibernate.c3p0.timeout", Setting.maxIdle + "");
    properties.put("hibernate.c3p0.idle_test_period", "600");//10
    properties.put("hibernate.c3p0.preferredTestQuery", "SELECT 1");
    if (Setting.runMode == Setting.DEV_MODE) {
        properties.put("hibernate.show_sql", "true");
    }
    properties.put("hibernate.order_updates", "true");
    properties.put("hibernate.cache.use_second_level_cache", "true");
    properties.put("hibernate.cache.provider_class", "org.hibernate.cache.EhCacheProvider");

    Properties extraProp = new Properties();
    try {
        InputStream extra = ClassLoader.getSystemResourceAsStream("hibernate.properties");
        if (extra != null) {
            extraProp.load(extra);
            properties.putAll(extraProp);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    onHibernateConfig(properties);
    cfg.mergeProperties(properties);
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties())
            .buildServiceRegistry();
    Setting.sessionFactory = cfg.buildSessionFactory(serviceRegistry);

}