package org.synyx.hades.sample.dao;
import static org.junit.Assert.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.synyx.hades.dao.GenericDao;
import org.synyx.hades.dao.orm.GenericJpaDao;
import org.synyx.hades.sample.domain.User;
/**
* This unit tests shows plain usage of {@link GenericJpaDao}.
*
* @author Oliver Gierke - gierke@synyx.de
*/
public class BasicSample {
private GenericDao<User, Long> userDao;
private EntityManager em;
/**
* Sets up a {@link GenericJpaDao} instance.
*/
@Before
public void setUp() {
EntityManagerFactory factory =
Persistence.createEntityManagerFactory("hades.sample.jpa");
em = factory.createEntityManager();
userDao = GenericJpaDao.create(em, User.class);
em.getTransaction().begin();
}
@After
public void tearDown() {
em.getTransaction().rollback();
}
/**
* Tests saving users. Don't mimic transactionality shown here. It seriously
* lacks resource cleanup in case of an exception. Simplification serves
* descriptivness.
*/
@Test
public void savingUsers() {
User user = new User();
user.setUsername("username");
user = userDao.save(user);
assertEquals(user, userDao.readByPrimaryKey(user.getId()));
}
}