List of usage examples for org.springframework.transaction.support TransactionCallback TransactionCallback
TransactionCallback
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); } }); } }