Package com.alibaba.druid.bvt.hibernate

Source Code of com.alibaba.druid.bvt.hibernate.HibernateCRUDTest

package com.alibaba.druid.bvt.hibernate;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import junit.framework.TestCase;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;

import com.alibaba.druid.bvt.hibernate.entity.Sample;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcUtils;

/**
* @author yinheli <yinheli@gmail.com>
* @date 2012-11-26 下午11:41
*/
public class HibernateCRUDTest extends TestCase {

  private static final Logger log = LoggerFactory.getLogger(HibernateCRUDTest.class);

  private DruidDataSource dataSource;

  private SessionFactory sessionFactory;

  @Override
  public void setUp() throws Exception {
    /*init dataSource*/
    dataSource = new DruidDataSource();
    dataSource.setUrl("jdbc:h2:file:~/.h2/HibernateCRUDTest;AUTO_SERVER=TRUE");
    dataSource.setUsername("sa");
    dataSource.setPassword("");
    dataSource.setDefaultAutoCommit(false);
    dataSource.setFilters("log4j");

    /*init sessionFactory*/
    LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
    factoryBean.setDataSource(dataSource);

    Properties prop = new Properties();
    prop.put("hibernate.show_sql", "true");
    //prop.put("hibernate.format_sql", "true");
    prop.put("hibernate.hbm2ddl.auto", "create");
    prop.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
    factoryBean.setHibernateProperties(prop);
    factoryBean.setAnnotatedClasses(new Class<?>[]{Sample.class});

    try {
      factoryBean.afterPropertiesSet();
    } catch (IOException e) {
      e.printStackTrace();
    }
    sessionFactory = factoryBean.getObject();
  }

  @Override
  public void tearDown() throws Exception {
    sessionFactory.close();
    JdbcUtils.close(dataSource);
  }

  private void doCreate(Session session) {
    Sample sample = new Sample();
    sample.setId(1L);
    sample.setDesc("sample");
    sample.setCreateTime(new Date());
    session.save(sample);
  }

  private void doGet(Session session) {
    Sample sample = (Sample) session.get(Sample.class, 1L);
    log.debug("**sample:{}", sample);
    assert sample != null;
  }

  private void doUpdate(Session session) {
    Sample sample = (Sample) session.get(Sample.class, 1L);
    assert sample != null;
    sample.setDesc("update sample");
    sample.setUpdateTime(new Date());
    session.update(sample);
  }

  private void doDelete(Session session) {
    Sample sample = (Sample) session.get(Sample.class, 1L);
    assert sample != null;
    session.delete(sample);
  }

  /*-------- test start --------*/

  public void test_create() {
    Session session = null;
    try {
      session = sessionFactory.openSession();
      doCreate(session);
    } finally {
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_get() {
    Session session = null;
    try {
      session = sessionFactory.openSession();
      doCreate(session);
      doGet(session);
    } finally {
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_update() {
    Session session = null;
    try {
      session = sessionFactory.openSession();
      doCreate(session);
      doUpdate(session);
    } finally {
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_delete() {
    Session session = null;
    try {
      session = sessionFactory.openSession();
      doCreate(session);
      doDelete(session);
    } finally {
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_transactional_create() {
    Session session = null;
    Transaction tran = null;
    try {
      session = sessionFactory.openSession();
      tran = session.beginTransaction();
      doCreate(session);
    } finally {
      if (tran != null) {
        tran.commit();
      }
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_transactional_update() {
    Session session = null;
    Transaction tran = null;
    try {
      session = sessionFactory.openSession();
      tran = session.beginTransaction();
      doCreate(session);
      doUpdate(session);
    } finally {
      if (tran != null) {
        tran.commit();
      }
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

  public void test_transactional_delete() {
    Session session = null;
    Transaction tran = null;
    try {
      session = sessionFactory.openSession();
      tran = session.beginTransaction();
      doCreate(session);
      doDelete(session);
    } finally {
      if (tran != null) {
        tran.commit();
      }
      if (session != null){
        session.flush();
        session.close();
      }
    }
  }

}
TOP

Related Classes of com.alibaba.druid.bvt.hibernate.HibernateCRUDTest

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.