Search in sources :

Example 6 with Item

use of org.jpwh.model.bulkbatch.Item in project microservices by pwillhan.

the class BulkStatementsSQL method bulkUpdateHibernate.

@Test(groups = { "H2", "MYSQL", "POSTGRESQL" })
public void bulkUpdateHibernate() throws Exception {
    BulkBatchTestData 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();
        Item someItem = em.find(Item.class, ITEM_ID);
        User johndoe = em.find(User.class, USER_ID);
        int originalVersion = someItem.getVersion();
        assertEquals(someItem.getSeller(), johndoe);
        assertFalse(someItem.isActive());
        org.hibernate.SQLQuery query = em.unwrap(org.hibernate.Session.class).createSQLQuery("update ITEM set ACTIVE = true where SELLER_ID = :sellerId");
        query.setParameter("sellerId", johndoe.getId());
        query.addSynchronizedEntityClass(Item.class);
        // Only the second-level cache regions with Item data have been cleared
        int updatedEntities = query.executeUpdate();
        // Updated rows not entity instances!
        assertEquals(updatedEntities, 2);
        assertFalse(someItem.isActive());
        // Update the instance in persistence context
        em.refresh(someItem);
        assertTrue(someItem.isActive());
        // Version wasn't incremented!
        assertEquals(someItem.getVersion(), originalVersion);
        tx.commit();
        em.close();
    } finally {
        TM.rollback();
    }
}
Also used : UserTransaction(javax.transaction.UserTransaction) Item(org.jpwh.model.bulkbatch.Item) EntityManager(javax.persistence.EntityManager) User(org.jpwh.model.bulkbatch.User) JPATest(org.jpwh.env.JPATest) Test(org.testng.annotations.Test)

Example 7 with Item

use of org.jpwh.model.bulkbatch.Item in project microservices by pwillhan.

the class BulkStatementsCriteria method bulkUpdate.

@Test
public void bulkUpdate() throws Exception {
    BulkBatchTestData testData = storeTestData();
    UserTransaction tx = TM.getUserTransaction();
    try {
        CriteriaBuilder criteriaBuilder = JPA.getEntityManagerFactory().getCriteriaBuilder();
        tx.begin();
        EntityManager em = JPA.createEntityManager();
        long ITEM_ID = testData.items.getFirstId();
        long USER_ID = testData.users.getFirstId();
        Item someItem = em.find(Item.class, ITEM_ID);
        User johndoe = em.find(User.class, USER_ID);
        int originalVersion = someItem.getVersion();
        assertEquals(someItem.getSeller(), johndoe);
        assertFalse(someItem.isActive());
        CriteriaUpdate<Item> update = criteriaBuilder.createCriteriaUpdate(Item.class);
        Root<Item> i = update.from(Item.class);
        update.set(i.get(Item_.active), true);
        update.where(criteriaBuilder.equal(i.get(Item_.seller), johndoe));
        int updatedEntities = em.createQuery(update).executeUpdate();
        // Entity instances, not "rows"
        assertEquals(updatedEntities, 2);
        assertFalse(someItem.isActive());
        // Update the instance in persistence context
        em.refresh(someItem);
        assertTrue(someItem.isActive());
        // Version wasn't incremented!
        assertEquals(someItem.getVersion(), originalVersion);
        tx.commit();
        em.close();
    } finally {
        TM.rollback();
    }
}
Also used : UserTransaction(javax.transaction.UserTransaction) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Item(org.jpwh.model.bulkbatch.Item) EntityManager(javax.persistence.EntityManager) User(org.jpwh.model.bulkbatch.User) JPATest(org.jpwh.env.JPATest) Test(org.testng.annotations.Test)

Example 8 with Item

use of org.jpwh.model.bulkbatch.Item in project microservices by pwillhan.

the class BulkStatementsJPQL method storeTestData.

public BulkBatchTestData 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);
    em.persist(item);
    itemIds[0] = item.getId();
    for (int i = 1; i <= 3; i++) {
        Bid bid = new Bid(item, robertdoe, new BigDecimal(9 + i));
        item.getBids().add(bid);
        em.persist(bid);
    }
    item = new Item("Item Two", CalendarUtil.TOMORROW.getTime(), johndoe);
    em.persist(item);
    itemIds[1] = item.getId();
    for (int i = 1; i <= 1; i++) {
        Bid bid = new Bid(item, janeroe, new BigDecimal(2 + i));
        item.getBids().add(bid);
        em.persist(bid);
    }
    item = new Item("Item_Three", CalendarUtil.AFTER_TOMORROW.getTime(), janeroe);
    em.persist(item);
    itemIds[2] = item.getId();
    for (int i = 1; i <= 1; i++) {
        Bid bid = new Bid(item, johndoe, new BigDecimal(3 + i));
        item.getBids().add(bid);
        em.persist(bid);
    }
    em.persist(new BankAccount(janeroe, "Jane Roe", "445566", "One Percent Bank Inc.", "999"));
    em.persist(new CreditCard(johndoe, "John Doe", "1234123412341234", "06", "2015"));
    tx.commit();
    em.close();
    BulkBatchTestData testData = new BulkBatchTestData();
    testData.items = new TestData(itemIds);
    testData.users = new TestData(userIds);
    return testData;
}
Also used : UserTransaction(javax.transaction.UserTransaction) User(org.jpwh.model.bulkbatch.User) TestData(org.jpwh.shared.util.TestData) BankAccount(org.jpwh.model.bulkbatch.BankAccount) BigDecimal(java.math.BigDecimal) CreditCard(org.jpwh.model.bulkbatch.CreditCard) StolenCreditCard(org.jpwh.model.bulkbatch.StolenCreditCard) Item(org.jpwh.model.bulkbatch.Item) EntityManager(javax.persistence.EntityManager) Bid(org.jpwh.model.bulkbatch.Bid)

Example 9 with Item

use of org.jpwh.model.bulkbatch.Item in project microservices by pwillhan.

the class BulkStatementsSQL method bulkUpdate.

@Test(groups = { "H2", "MYSQL", "POSTGRESQL" })
public void bulkUpdate() throws Exception {
    BulkBatchTestData 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();
        Item someItem = em.find(Item.class, ITEM_ID);
        User johndoe = em.find(User.class, USER_ID);
        int originalVersion = someItem.getVersion();
        assertEquals(someItem.getSeller(), johndoe);
        assertFalse(someItem.isActive());
        Query query = em.createNativeQuery("update ITEM set ACTIVE = true where SELLER_ID = :sellerId").setParameter("sellerId", johndoe.getId());
        int updatedEntities = query.executeUpdate();
        // All second-level cache regions have been cleared!
        // Updated rows not entity instances!
        assertEquals(updatedEntities, 2);
        assertFalse(someItem.isActive());
        // Update the instance in persistence context
        em.refresh(someItem);
        assertTrue(someItem.isActive());
        // Version wasn't incremented!
        assertEquals(someItem.getVersion(), originalVersion);
        tx.commit();
        em.close();
    } finally {
        TM.rollback();
    }
}
Also used : UserTransaction(javax.transaction.UserTransaction) Item(org.jpwh.model.bulkbatch.Item) EntityManager(javax.persistence.EntityManager) User(org.jpwh.model.bulkbatch.User) Query(javax.persistence.Query) JPATest(org.jpwh.env.JPATest) Test(org.testng.annotations.Test)

Aggregations

EntityManager (javax.persistence.EntityManager)9 UserTransaction (javax.transaction.UserTransaction)9 Item (org.jpwh.model.bulkbatch.Item)9 User (org.jpwh.model.bulkbatch.User)7 JPATest (org.jpwh.env.JPATest)6 Test (org.testng.annotations.Test)6 BigDecimal (java.math.BigDecimal)3 BankAccount (org.jpwh.model.bulkbatch.BankAccount)3 Bid (org.jpwh.model.bulkbatch.Bid)3 CreditCard (org.jpwh.model.bulkbatch.CreditCard)3 TestData (org.jpwh.shared.util.TestData)3 Query (javax.persistence.Query)2 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)2 StolenCreditCard (org.jpwh.model.bulkbatch.StolenCreditCard)2