package kr.pe.kwonnam.hibernate4memcached.example; import kr.pe.kwonnam.hibernate4memcached.example.entity.Person; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import javax.persistence.Query; import java.util.Date; /** * @author KwonNam Son (kwon37xi@gmail.com) */ public class ReadOnlyTest { private Logger log = LoggerFactory.getLogger(ReadOnlyTest.class); @Before public void setUp() throws Exception { EntityTestUtils.init(); } @Test public void readonly() throws Exception { EntityManager em = EntityTestUtils.start(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); log.debug("### First load and save"); log.debug("person 1 first load."); Person person = em.find(Person.class, 1L); log.debug("person first load : {}", person); Person newPerson = new Person(); newPerson.setName("Cogito Ergo Sum"); newPerson.setBirthdate(new Date()); em.persist(newPerson); transaction.commit(); EntityTestUtils.stop(em); log.debug("### Delete!"); em = EntityTestUtils.start(); transaction = em.getTransaction(); transaction.begin(); log.debug("person 2 delete."); Person person2 = em.find(Person.class, newPerson.getId()); em.remove(person2); transaction.commit(); EntityTestUtils.stop(em); try { // update시에는 exception 발생. log.debug("### Update!"); em = EntityTestUtils.start(); transaction = em.getTransaction(); transaction.begin(); person = em.find(Person.class, 1L); person.setBirthdate(new Date()); em.merge(person); transaction.commit(); } catch (Exception ex) { log.error("Update 중 오류 발생", ex); } finally { EntityTestUtils.stop(em); } log.debug("### Delete with query!"); em = EntityTestUtils.start(); transaction = em.getTransaction(); transaction.begin(); Query query = em.createQuery("delete from Person where id = :id"); query.setParameter("id", 1L); query.executeUpdate(); transaction.commit(); EntityTestUtils.stop(em); } @After public void tearDown() throws Exception { EntityTestUtils.destroy(); } }