Example usage for org.springframework.transaction.support TransactionCallback TransactionCallback

List of usage examples for org.springframework.transaction.support TransactionCallback TransactionCallback

Introduction

In this page you can find the example usage for org.springframework.transaction.support TransactionCallback TransactionCallback.

Prototype

TransactionCallback

Source Link

Usage

From source file:cherry.sqlapp.service.sqltool.exec.ExecQueryServiceImpl.java

@Override
public PageSet query(String databaseName, final String sql, final Map<String, ?> paramMap,
        final Consumer consumer) {

    final DataSource dataSource = dataSourceDef.getDataSource(databaseName);
    PlatformTransactionManager txMgr = new DataSourceTransactionManager(dataSource);
    DefaultTransactionDefinition txDef = new DefaultTransactionDefinition();
    txDef.setReadOnly(true);//from  w w  w  .  jav  a2s  .  c om

    TransactionOperations txOp = new TransactionTemplate(txMgr, txDef);
    return txOp.execute(new TransactionCallback<PageSet>() {
        @Override
        public PageSet doInTransaction(TransactionStatus status) {
            try {

                long numOfItems = extractor.extract(dataSource, sql, paramMap, consumer, new NoneLimiter());
                PageSet pageSet = paginator.paginate(0L, numOfItems, (numOfItems <= 0L ? 1L : numOfItems));

                return pageSet;
            } catch (IOException ex) {
                throw new IllegalStateException(ex);
            }
        }
    });
}

From source file:com.vladmihalcea.HibernateFetchStrategyTest.java

@Test
public void test() {

    final Long productId = transactionTemplate.execute(new TransactionCallback<Long>() {
        @Override// www  .j  a  v  a2  s  . c om
        public Long doInTransaction(TransactionStatus transactionStatus) {

            Company company = new Company();
            company.setName("TV Company");
            entityManager.persist(company);

            Product product = new Product("tvCode");
            product.setName("TV");
            product.setCompany(company);

            Image frontImage = new Image();
            frontImage.setName("front image");
            frontImage.setIndex(0);

            Image sideImage = new Image();
            sideImage.setName("side image");
            sideImage.setIndex(1);

            product.addImage(frontImage);
            product.addImage(sideImage);

            WarehouseProductInfo warehouseProductInfo = new WarehouseProductInfo();
            warehouseProductInfo.setQuantity(101);
            product.addWarehouse(warehouseProductInfo);

            Importer importer = new Importer();
            importer.setName("Importer");
            entityManager.persist(importer);
            product.setImporter(importer);

            entityManager.persist(product);
            return product.getId();
        }
    });
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override
        public Void doInTransaction(TransactionStatus transactionStatus) {
            LOG.info("Fetch using find");
            Product product = entityManager.find(Product.class, productId);
            assertNotNull(product);
            return null;
        }
    });

    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override
        public Void doInTransaction(TransactionStatus transactionStatus) {
            LOG.info("Fetch using JPQL");
            Product product = entityManager
                    .createQuery("select p " + "from Product p " + "where p.id = :productId", Product.class)
                    .setParameter("productId", productId).getSingleResult();
            assertNotNull(product);
            return null;
        }
    });
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override
        public Void doInTransaction(TransactionStatus transactionStatus) {

            LOG.info("Fetch using Criteria");

            CriteriaBuilder cb = entityManager.getCriteriaBuilder();
            CriteriaQuery<Product> cq = cb.createQuery(Product.class);
            Root<Product> productRoot = cq.from(Product.class);
            cq.where(cb.equal(productRoot.get("id"), productId));
            Product product = entityManager.createQuery(cq).getSingleResult();
            assertNotNull(product);
            return null;
        }
    });
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override
        public Void doInTransaction(TransactionStatus transactionStatus) {
            LOG.info("Fetch using join fetch JPQL");

            Product product = product = entityManager.createQuery("select p " + "from Product p "
                    + "inner join fetch p.warehouseProductInfo " + "inner join fetch p.importer", Product.class)
                    .getSingleResult();
            assertNotNull(product);

            return null;
        }
    });
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override
        public Void doInTransaction(TransactionStatus transactionStatus) {

            Image image = entityManager
                    .createQuery("select i " + "from Image i " + "inner join fetch i.product p "
                            + "where p.id = :productId", Image.class)
                    .setParameter("productId", productId).getResultList().get(0);
            assertNotNull(image);

            return null;
        }
    });
}

From source file:com.vladmihalcea.HibernateJPATransactionIsolationIntegrationTest.java

@Test
public void test() {
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override// w  w  w. j  a  v  a2  s  . c  o m
        public Void doInTransaction(TransactionStatus transactionStatus) {
            Company company = new Company();
            company.setName("TV Company");
            entityManager.persist(company);

            Product product1 = new Product("tvCode");
            product1.setName("TV");
            product1.setCompany(company);

            Image frontImage1 = new Image();
            frontImage1.setName("front image 1");
            frontImage1.setIndex(0);

            Image sideImage1 = new Image();
            sideImage1.setName("side image 1");
            sideImage1.setIndex(1);

            product1.addImage(frontImage1);
            product1.addImage(sideImage1);

            WarehouseProductInfo warehouseProductInfo1 = new WarehouseProductInfo();
            warehouseProductInfo1.setQuantity(101);
            product1.addWarehouse(warehouseProductInfo1);

            entityManager.persist(product1);

            Product product = entityManager.find(Product.class, 1L);
            product.setQuantity(10);

            return null;
        }
    });

    storeService.purchase(1L);

}

From source file:org.iti.agrimarket.model.dao.UserRatesUserDAO.java

@Override
public void edit(UserRatesUser userRatesUser) {
    transactionTemplate.execute(new TransactionCallback() {
        @Override//from w  w  w .j a  v  a  2 s.co  m
        public Object doInTransaction(TransactionStatus ts) {
            try {
                Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();

                session.update(userRatesUser);
            } catch (Exception e) {
                e.printStackTrace();
                ts.setRollbackOnly();
            }
            return null;
        }
    });
}

From source file:com.vladmihalcea.HibernateSetWithMultiLevelFetchTest.java

@Test
public void test() {

    final Long productId = transactionTemplate.execute(new TransactionCallback<Long>() {
        @Override/*from  w  w w  .ja v a 2s.  c om*/
        public Long doInTransaction(TransactionStatus transactionStatus) {

            Company company = new Company();
            company.setName("TV Company");
            entityManager.persist(company);

            Product product = new Product("tvCode");
            product.setName("TV");
            product.setCompany(company);

            WarehouseProductInfo warehouseProductInfo = new WarehouseProductInfo();
            warehouseProductInfo.setQuantity(101);
            product.addWarehouse(warehouseProductInfo);

            Image image1 = new Image();
            image1.setName("image1");
            image1.setIndex(0);

            Version version11 = new Version();
            version11.setType("type11");

            SubVersion subVersion111 = new SubVersion();
            subVersion111.setCode("code111");
            SubVersion subVersion112 = new SubVersion();
            subVersion111.setCode("code112");
            SubVersion subVersion113 = new SubVersion();
            subVersion111.setCode("code113");
            SubVersion subVersion114 = new SubVersion();
            subVersion111.setCode("code114");
            version11.addSubVersion(subVersion111);
            version11.addSubVersion(subVersion112);
            version11.addSubVersion(subVersion113);
            version11.addSubVersion(subVersion114);

            Version version12 = new Version();
            version12.setType("type12");

            SubVersion subVersion121 = new SubVersion();
            subVersion121.setCode("code121");
            SubVersion subVersion122 = new SubVersion();
            subVersion122.setCode("code122");
            SubVersion subVersion123 = new SubVersion();
            subVersion123.setCode("code123");
            SubVersion subVersion124 = new SubVersion();
            subVersion124.setCode("code124");
            version12.addSubVersion(subVersion121);
            version12.addSubVersion(subVersion122);
            version12.addSubVersion(subVersion123);
            version12.addSubVersion(subVersion124);

            image1.addVersion(version11);
            image1.addVersion(version12);

            Image image2 = new Image();
            image2.setName("image2");
            image2.setIndex(1);

            Version version21 = new Version();
            version21.setType("type21");

            SubVersion subVersion211 = new SubVersion();
            subVersion211.setCode("code211");
            SubVersion subVersion212 = new SubVersion();
            subVersion212.setCode("code212");
            SubVersion subVersion213 = new SubVersion();
            subVersion213.setCode("code213");
            SubVersion subVersion214 = new SubVersion();
            subVersion214.setCode("code214");
            version21.addSubVersion(subVersion211);
            version21.addSubVersion(subVersion212);
            version21.addSubVersion(subVersion213);
            version21.addSubVersion(subVersion214);

            Version version22 = new Version();
            version22.setType("type22");

            SubVersion subVersion221 = new SubVersion();
            subVersion221.setCode("code221");
            SubVersion subVersion222 = new SubVersion();
            subVersion222.setCode("code222");
            SubVersion subVersion223 = new SubVersion();
            subVersion223.setCode("code223");
            version22.addSubVersion(subVersion221);
            version22.addSubVersion(subVersion222);
            version22.addSubVersion(subVersion223);

            image2.addVersion(version21);
            image2.addVersion(version22);

            product.addImage(image1);
            product.addImage(image2);

            entityManager.persist(product);
            return product.getId();
        }
    });

    Product product = transactionTemplate.execute(new TransactionCallback<Product>() {
        @Override
        public Product doInTransaction(TransactionStatus transactionStatus) {
            return entityManager.find(Product.class, productId);
        }
    });
    try {
        navigateProduct(product);
        fail("Should have thrown LazyInitializationException!");
    } catch (LazyInitializationException expected) {

    }

    product = transactionTemplate.execute(new TransactionCallback<Product>() {
        @Override
        public Product doInTransaction(TransactionStatus transactionStatus) {
            Product p = entityManager.createQuery(
                    "select p " + "from Product p " + "left join fetch p.images i "
                            + "left join fetch i.versions v " + "left join fetch v.subVersions sv ",
                    Product.class).getSingleResult();
            return p;
        }
    });
    navigateProduct(product);

}

From source file:me.doshou.admin.monitor.web.controller.JPAQLExecutorController.java

@PageableDefaults(pageNumber = 0, value = 10)
@RequestMapping(value = "/ql", method = RequestMethod.POST)
public String executeQL(final @RequestParam("ql") String ql, final Model model, final Pageable pageable) {

    model.addAttribute("sessionFactory", HibernateUtils.getSessionFactory(em));

    try {//w w w  .  ja  va 2  s  . c  o  m
        new TransactionTemplate(transactionManager).execute(new TransactionCallback<Void>() {
            @Override
            public Void doInTransaction(TransactionStatus status) {
                //1?ql
                try {
                    Query query = em.createQuery(ql);
                    int updateCount = query.executeUpdate();
                    model.addAttribute("updateCount", updateCount);
                    return null;
                } catch (Exception e) {
                }
                //2 ?ql
                String findQL = ql;
                String alias = QueryUtils.detectAlias(findQL);
                if (StringUtils.isEmpty(alias)) {
                    Pattern pattern = Pattern.compile("^(.*\\s*from\\s+)(.*)(\\s*.*)",
                            Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
                    findQL = pattern.matcher(findQL).replaceFirst("$1$2 o $3");
                }
                String countQL = QueryUtils.createCountQueryFor(findQL);
                Query countQuery = em.createQuery(countQL);
                Query findQuery = em.createQuery(findQL);
                findQuery.setFirstResult(pageable.getOffset());
                findQuery.setMaxResults(pageable.getPageSize());

                Page page = new PageImpl(findQuery.getResultList(), pageable,
                        (Long) countQuery.getSingleResult());

                model.addAttribute("resultPage", page);
                return null;
            }
        });
    } catch (Exception e) {
        StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw));
        model.addAttribute(Constants.ERROR, sw.toString());
    }

    return showQLForm();
}

From source file:org.iti.agrimarket.model.dao.CategoryDAO.java

@Override
public void edit(Category category) {
    transactionTemplate.execute(new TransactionCallback() {
        @Override//from w w  w  . ja va 2  s  .  c  o  m
        public Object doInTransaction(TransactionStatus ts) {
            try {
                Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();

                session.update(category);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                ts.setRollbackOnly();
            }
            return false;
        }
    });
}

From source file:com.javaetmoi.core.persistence.hibernate.TestIssue3.java

@Test
public void listWithEmbeddableClass() {

    Plan dbContainer = transactionTemplate.execute(new TransactionCallback<Plan>() {

        public Plan doInTransaction(TransactionStatus status) {
            Plan plan = (Plan) sessionFactory.getCurrentSession().get(Plan.class, 1);
            LazyLoadingUtil.deepHydrate(sessionFactory.getCurrentSession(), plan);
            return plan;
        }/*from  www . ja  va2s. com*/
    });
    assertEquals(new Integer(1), dbContainer.getId());
    assertEquals(1, dbContainer.getTransfers().size());
    assertEquals(2, dbContainer.getTransfers().get(0).getSubPlan().getEvents().size());
}

From source file:se.inera.intyg.intygstjanst.web.integration.test.SjukfallCertResource.java

@DELETE
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)//from w ww.  j  a  v  a  2s  .c o m
public Response deleteSjukfallCertificate(@PathParam("id") final String id) {
    return transactionTemplate.execute(new TransactionCallback<Response>() {
        public Response doInTransaction(TransactionStatus status) {
            try {
                SjukfallCertificate cert = entityManager.find(SjukfallCertificate.class, id);
                if (cert != null) {
                    entityManager.remove(cert);
                }
                return Response.ok().build();
            } catch (Throwable t) {
                status.setRollbackOnly();
                LOGGER.warn("deleted sjukfall certificate with id " + id + " failed: " + t.getMessage());
                return Response.serverError().build();
            }
        }
    });
}

From source file:org.apache.cayenne.access.SpringDataDomain.java

/**
 * Executes Transformer.transform() method in a transaction. Transaction
 * policy is to check for the thread transaction, and use it if one exists.
 * If it doesn't, a new transaction is created, with a scope limited to this
 * method.//ww w . j  av a  2 s . com
 */
@Override
Object runInTransaction(final Transformer operation) {
    if (!this.isUsingExternalTransactions()) {
        return super.runInTransaction(operation);
    } else {
        if (TransactionSynchronizationManager.isActualTransactionActive()) {
            return operation.transform(null);
        }
        TransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
        return transationOperation.execute(transactionDefinition, new TransactionCallback<Object>() {

            @Override
            public Object doInTransaction(TransactionStatus status) {
                return operation.transform(status);
            }
        });
    }
}