⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testspringhibernate3.java

📁 QUICKSTARTS SPRING QUICKSTARTS SPRING QUICKSTARTS SPRING
💻 JAVA
字号:
/*
 * Copyright 2007, Sualeh Fatehi <sualeh@hotmail.com>
 * 
 * This work is licensed under the Creative Commons Attribution 3.0 License. 
 * To view a copy of this license, visit 
 * http://creativecommons.org/licenses/by/3.0/ 
 * or send a letter to 
 * Creative Commons
 * 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
 */
package quickstart.test;

import static org.junit.Assert.assertEquals;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import quickstart.dao.DataAccessOperator;
import quickstart.model.Event;


public class TestSpringHibernate3 {

	private static final String EVENT_COUNT_SQL = "SELECT COUNT(*) FROM Event";

	private ApplicationContext context;

	@Before
	public void createDatabase() {
		context = new ClassPathXmlApplicationContext("context.xml");

		final JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean(
				"jdbcTemplate", JdbcTemplate.class);
		jdbcTemplate
				.execute("CREATE TABLE Event(id INTEGER IDENTITY PRIMARY KEY, name VARCHAR, startDate DATETIME, duration INT, UNIQUE(id))");
	}

	@Test
	public void daoHelper() {

		final SessionFactory sessionFactory = (SessionFactory) context.getBean(
				"sessionFactory", SessionFactory.class);
		final JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean(
				"jdbcTemplate", JdbcTemplate.class);

		int eventCount;
		Event event;
		DataAccessOperator<Event> daoHelper;

		daoHelper = new DataAccessOperator<Event>(sessionFactory);

		event = createNewEvent();

		daoHelper.save(event);

		event = null;
		daoHelper = null;

		eventCount = jdbcTemplate.queryForInt(EVENT_COUNT_SQL);
		assertEquals("Number of events do not match", 1, eventCount);

		daoHelper = new DataAccessOperator<Event>(sessionFactory);

		final List<Event> events = daoHelper.findAll(Event.class);
		for (final Iterator<Event> iter = events.iterator(); iter.hasNext();) {
			event = iter.next();
			if (event == null) {
				throw new RuntimeException("Got null entity");
			}
			daoHelper.delete(event);
			event = null;
		}

		event = null;
		daoHelper = null;

		eventCount = jdbcTemplate.queryForInt(EVENT_COUNT_SQL);
		assertEquals("Number of events do not match", 0, eventCount);

	}

	@After
	public void dropDatabase() {
		final JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean(
				"jdbcTemplate", JdbcTemplate.class);
		jdbcTemplate.execute("DROP TABLE Event");

		context = null;
	}

	@Test
	public void springHibernate() {

		final SessionFactory sessionFactory = (SessionFactory) context.getBean(
				"sessionFactory", SessionFactory.class);
		final JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean(
				"jdbcTemplate", JdbcTemplate.class);

		Session session;
		Transaction transaction;
		int eventCount;
		Event event;

		session = sessionFactory.openSession();
		transaction = session.beginTransaction();

		event = createNewEvent();

		session.save(event);
		session.flush();
		transaction.commit();
		session.disconnect();
		session.close();

		session = null;
		event = null;

		eventCount = jdbcTemplate.queryForInt(EVENT_COUNT_SQL);
		assertEquals("Number of events do not match", 1, eventCount);

		session = sessionFactory.openSession();
		transaction = session.beginTransaction();
		final List events = session.createQuery(
				"select e from sf.domain.Event as e").list();
		for (final Iterator iter = events.iterator(); iter.hasNext();) {
			event = (Event) iter.next();
			if (event == null) {
				throw new RuntimeException("Got null entity");
			}
			session.delete(event);
			event = null;
		}
		transaction.commit();
		session.disconnect();
		session.close();

		eventCount = jdbcTemplate.queryForInt(EVENT_COUNT_SQL);
		assertEquals("Number of events do not match", 0, eventCount);
	}

	private Event createNewEvent() {
		final Event event = new Event();
		event.setName("Event");
		event.setStartDate(new Date());
		return event;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -