I am working on spring MVC application and i want to delete the record from DB. I am starting the transaction in referenceData() and closing in onSubmit() mehtods. Code is below, Please advice is that right way to define trnsaction boundries in Controller. Should we handle transactions in Controllers for MVC applications.
<blockquote>code:<pre name="code" class="core"> protected Map referenceData(HttpServletRequest request) throws Exception { // start a transaction tx = (ResourceTransactionManager) ctx.getBean("transactionManager"); DefaultTransactionDefinition def = new DefaultTransactionDefinition(); TransactionStatus status = tx.getTransaction(def); HashMap model = new HashMap(); List list = userServiceImpl.findAllUsers(); model.put("users", list); return model; }
Personally, and this is just my opinion. I thought declaring transactions at your service/use case level is the place to do it, and I personally would use @Transactional, but that is my preference. Rather than manually code transaction support, which couples it with that code. Which we want to avoid tight coupling, otherwise we wouldn't be using Spring.
If you don't like @Transactional, then what about declaring Transactions through Spring AOP. Then it is 100% decoupled from your code.