use of java.io.ObjectOutputStream in project hibernate-orm by hibernate.
the class EntityManagerFactorySerializationTest method testSerialization.
@Test
public void testSerialization() throws Exception {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(stream);
out.writeObject(entityManagerFactory());
out.close();
byte[] serialized = stream.toByteArray();
stream.close();
ByteArrayInputStream byteIn = new ByteArrayInputStream(serialized);
ObjectInputStream in = new ObjectInputStream(byteIn);
EntityManagerFactory serializedFactory = (EntityManagerFactory) in.readObject();
in.close();
byteIn.close();
EntityManager em = serializedFactory.createEntityManager();
//em.getTransaction().begin();
//em.setFlushMode( FlushModeType.NEVER );
Cat cat = new Cat();
cat.setAge(3);
cat.setDateOfBirth(new Date());
cat.setLength(22);
cat.setName("Kitty");
em.persist(cat);
Item item = new Item();
item.setName("Train Ticket");
item.setDescr("Paris-London");
em.persist(item);
//em.getTransaction().commit();
//em.getTransaction().begin();
item.setDescr("Paris-Bruxelles");
//em.getTransaction().commit();
//fake the in container work
((HibernateEntityManager) em).getSession().disconnect();
stream = new ByteArrayOutputStream();
out = new ObjectOutputStream(stream);
out.writeObject(em);
out.close();
serialized = stream.toByteArray();
stream.close();
byteIn = new ByteArrayInputStream(serialized);
in = new ObjectInputStream(byteIn);
em = (EntityManager) in.readObject();
in.close();
byteIn.close();
//fake the in container work
em.getTransaction().begin();
item = em.find(Item.class, item.getName());
item.setDescr(item.getDescr() + "-Amsterdam");
cat = (Cat) em.createQuery("select c from " + Cat.class.getName() + " c").getSingleResult();
cat.setLength(34);
em.flush();
em.remove(item);
em.remove(cat);
em.flush();
em.getTransaction().commit();
em.close();
}
use of java.io.ObjectOutputStream in project hibernate-orm by hibernate.
the class EntityManagerSerializationTest method testSerialization.
@Test
public void testSerialization() throws Exception {
EntityManager em = entityManagerFactory().createEntityManager();
//em.getTransaction().begin();
//em.setFlushMode( FlushModeType.NEVER );
Cat cat = new Cat();
cat.setAge(3);
cat.setDateOfBirth(new Date());
cat.setLength(22);
cat.setName("Kitty");
em.persist(cat);
Item item = new Item();
item.setName("Train Ticket");
item.setDescr("Paris-London");
em.persist(item);
//em.getTransaction().commit();
//em.getTransaction().begin();
item.setDescr("Paris-Bruxelles");
//em.getTransaction().commit();
//fake the in container work
((HibernateEntityManager) em).getSession().disconnect();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(stream);
out.writeObject(em);
out.close();
byte[] serialized = stream.toByteArray();
stream.close();
ByteArrayInputStream byteIn = new ByteArrayInputStream(serialized);
ObjectInputStream in = new ObjectInputStream(byteIn);
em = (EntityManager) in.readObject();
in.close();
byteIn.close();
//fake the in container work
em.getTransaction().begin();
item = em.find(Item.class, item.getName());
item.setDescr(item.getDescr() + "-Amsterdam");
cat = (Cat) em.createQuery("select c from " + Cat.class.getName() + " c").getSingleResult();
cat.setLength(34);
em.flush();
em.remove(item);
em.remove(cat);
em.flush();
em.getTransaction().commit();
em.close();
}
use of java.io.ObjectOutputStream in project hibernate-orm by hibernate.
the class GetterSetterSerializationTest method testProtectedMethodSetter.
@Test
@TestForIssue(jiraKey = "HHH-11202")
public void testProtectedMethodSetter() throws Exception {
final AnEntity entity = new AnEntity(new PK(1L));
final Getter getter = new GetterMethodImpl(AnEntity.class, "pk", ReflectHelper.findGetterMethod(AnEntity.class, "pk"));
final Setter setter = new SetterMethodImpl(AnEntity.class, "pk", ReflectHelper.findSetterMethod(AnEntity.class, "pk", PK.class));
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(setter);
final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
final Setter setterClone = (Setter) ois.readObject();
final PK pkNew = new PK(2L);
setterClone.set(entity, pkNew, null);
assertSame(pkNew, getter.get(entity));
}
use of java.io.ObjectOutputStream in project hibernate-orm by hibernate.
the class GetterSetterSerializationTest method testProtectedMethodGetter.
@Test
@TestForIssue(jiraKey = "HHH-11202")
public void testProtectedMethodGetter() throws Exception {
final AnEntity entity = new AnEntity(new PK(1L));
final Getter getter = new GetterMethodImpl(AnEntity.class, "pk", ReflectHelper.findGetterMethod(AnEntity.class, "pk"));
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(getter);
final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
final Getter getterClone = (Getter) ois.readObject();
assertSame(getter.get(entity), getterClone.get(entity));
}
use of java.io.ObjectOutputStream in project hibernate-orm by hibernate.
the class GetterSetterSerializationTest method testPrivateFieldSetter.
@Test
@TestForIssue(jiraKey = "HHH-11202")
public void testPrivateFieldSetter() throws Exception {
AnEntity entity = new AnEntity(new PK(1L));
final Getter getter = new GetterFieldImpl(AnEntity.class, "pk", ReflectHelper.findField(AnEntity.class, "pk"));
final Setter setter = new SetterFieldImpl(AnEntity.class, "pk", ReflectHelper.findField(AnEntity.class, "pk"));
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(setter);
final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
final Setter setterClone = (Setter) ois.readObject();
final PK pkNew = new PK(2L);
setterClone.set(entity, pkNew, null);
assertSame(pkNew, getter.get(entity));
}
Aggregations