// Path: hibernate4-memcached-example/src/main/java/kr/pe/kwonnam/hibernate4memcached/example/entity/Person.java
// @Entity
// @Table(name = "people")
// @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "people")
// public class Person implements Serializable {
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     @Column(name = "person_id", nullable = false)
//     private long id;
// 
//     @Column(name = "name", length = 32, nullable = false)
//     private String name;
// 
//     @Column(name="birthdate", nullable = true)
//     @Temporal(TemporalType.DATE)
//     private Date birthdate;
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Date getBirthdate() {
//         return birthdate;
//     }
// 
//     public void setBirthdate(Date birthdate) {
//         this.birthdate = birthdate;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Person person = (Person) o;
// 
//         if (id != person.id) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return (int) (id ^ (id >>> 32));
//     }
// 
//     @Override
//     public String toString() {
//         return "Person{" +
//                 "id='" + id + '\'' +
//                 ", name='" + name + '\'' +
//                 ", birthdate=" + birthdate +
//                 '}';
//     }
// }


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;
package kr.pe.kwonnam.hibernate4memcached.example;



/**
 * @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.");
// Path: hibernate4-memcached-example/src/main/java/kr/pe/kwonnam/hibernate4memcached/example/entity/Person.java
// @Entity
// @Table(name = "people")
// @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "people")
// public class Person implements Serializable {
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     @Column(name = "person_id", nullable = false)
//     private long id;
// 
//     @Column(name = "name", length = 32, nullable = false)
//     private String name;
// 
//     @Column(name="birthdate", nullable = true)
//     @Temporal(TemporalType.DATE)
//     private Date birthdate;
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Date getBirthdate() {
//         return birthdate;
//     }
// 
//     public void setBirthdate(Date birthdate) {
//         this.birthdate = birthdate;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Person person = (Person) o;
// 
//         if (id != person.id) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return (int) (id ^ (id >>> 32));
//     }
// 
//     @Override
//     public String toString() {
//         return "Person{" +
//                 "id='" + id + '\'' +
//                 ", name='" + name + '\'' +
//                 ", birthdate=" + birthdate +
//                 '}';
//     }
// }


// Path: hibernate4-memcached-example/src/test/java/kr/pe/kwonnam/hibernate4memcached/example/ReadOnlyTest.java
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;

package kr.pe.kwonnam.hibernate4memcached.example;



/**
 * @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);