Package org.molgenis.framework.db.jpa

Source Code of org.molgenis.framework.db.jpa.HibernateImp

package org.molgenis.framework.db.jpa;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.ejb.HibernateEntityManager;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
import org.molgenis.util.Entity;

/**
* @author joris lops
*/
class HibernateImp implements JpaFramework
{

  @Override
  public <E extends Entity> List<E> findByExample(EntityManager em, E example)
  {
    Session session = (Session) em.getDelegate();
    Example customerExample = Example.create(example).excludeZeroes();
    Criteria criteria = session.createCriteria(example.getClass()).add(customerExample);
    @SuppressWarnings("unchecked")
    List<E> list = criteria.list();
    return list;
  }

  @Override
  public void createTables(final String persistenceUnitName, final Map<String, Object> configOverwrites)
  {
    final Ejb3Configuration cfg = new Ejb3Configuration();
    cfg.configure(persistenceUnitName, configOverwrites);
    final SchemaExport schemaExport = new SchemaExport(cfg.getHibernateConfiguration());
    schemaExport.setOutputFile("schema.sql");
    schemaExport.create(true, true);
  }

  @Override
  public void updateTables(String persistenceUnitName, final Map<String, Object> configOverwrites)
  {
    final Ejb3Configuration cfg = new Ejb3Configuration();
    cfg.configure(persistenceUnitName, configOverwrites);
    final SchemaUpdate schemaUpdate = new SchemaUpdate(cfg.getHibernateConfiguration());
    schemaUpdate.setOutputFile("schema.sql");
    schemaUpdate.execute(true, true);
  }

  @Override
  public void dropTables(String persistenceUnitName, final Map<String, Object> configOverwrites)
  {
    final Ejb3Configuration cfg = new Ejb3Configuration();
    cfg.configure(persistenceUnitName, configOverwrites);
    final SchemaExport schemaExport = new SchemaExport(cfg.getHibernateConfiguration());
    schemaExport.setOutputFile("schema.sql");
    schemaExport.drop(true, true);
  }

  @SuppressWarnings("deprecation")
  @Override
  public Connection getConnection(EntityManager em)
  {
    return ((HibernateEntityManager) em).getSession().connection();
  }
}
TOP

Related Classes of org.molgenis.framework.db.jpa.HibernateImp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.