📄 testspringhibernate3.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 + -