use of org.jpwh.model.fetching.interception.User in project microservices by pwillhan.
the class LazyInterception method storeTestData.
public FetchTestData storeTestData() throws Exception {
UserTransaction tx = TM.getUserTransaction();
tx.begin();
EntityManager em = JPA.createEntityManager();
Long[] itemIds = new Long[3];
Long[] userIds = new Long[3];
User johndoe = new User("johndoe");
em.persist(johndoe);
userIds[0] = johndoe.getId();
User janeroe = new User("janeroe");
em.persist(janeroe);
userIds[1] = janeroe.getId();
User robertdoe = new User("robertdoe");
em.persist(robertdoe);
userIds[2] = robertdoe.getId();
Item item = new Item("Item One", CalendarUtil.TOMORROW.getTime(), johndoe, "Some description.");
em.persist(item);
itemIds[0] = item.getId();
item = new Item("Item Two", CalendarUtil.TOMORROW.getTime(), johndoe, "Some description.");
em.persist(item);
itemIds[1] = item.getId();
item = new Item("Item Three", CalendarUtil.AFTER_TOMORROW.getTime(), janeroe, "Some description.");
em.persist(item);
itemIds[2] = item.getId();
tx.commit();
em.close();
FetchTestData testData = new FetchTestData();
testData.items = new TestData(itemIds);
testData.users = new TestData(userIds);
return testData;
}
use of org.jpwh.model.fetching.interception.User in project microservices by pwillhan.
the class LazyInterception method noUserProxy.
@Test
public void noUserProxy() throws Exception {
FetchTestData testData = storeTestData();
UserTransaction tx = TM.getUserTransaction();
try {
tx.begin();
EntityManager em = JPA.createEntityManager();
Long ITEM_ID = testData.items.getFirstId();
Long USER_ID = testData.users.getFirstId();
{
// Proxies are disabled, getReference() will return an initialized instance
User user = em.getReference(User.class, USER_ID);
// select * from USERS where ID = ?
assertTrue(Hibernate.isInitialized(user));
}
em.clear();
{
Item item = em.find(Item.class, ITEM_ID);
// select * from ITEM where ID = ?
assertEquals(item.getSeller().getId(), USER_ID);
// select * from USERS where ID = ?
// Even item.getSeller() would trigger the SELECT!
}
tx.commit();
em.close();
} finally {
TM.rollback();
}
}
Aggregations