Batch Processing : Design check with SRP and OCP prinicple
Quick question, have you tried testing your code? Trying doing so, and you will find the leaks in your code.


DepositProcessor has a high dependency on DepositBatchProcessorSvc, why not to inject it and make the code flexible (easier to test and change).

public class DepositProcessor{
   private final DepositBatchProcessorSvc service;
   DepositProcessor(DepositBatchProcessorSvc service){
    this.service = service;
  }
}

BatchProcessorSvc could be totally generified,

/*K type of the object's promary key, and T is the object type*/
public interface BatchProcessorDao&lt;K,T&gt; {
  @Override
  Map&lt;K, List&lt;T&gt;&gt; fetchBatchData();
}

Always try to return interfaces and not implementations, ex:

HashMap&lt;String, List&lt;String&gt;&gt; fetchBatchData()


could be refactored to

Map&lt;String, List&lt;String&gt;&gt; fetchBatchData()

Save should never be fire and forget, I know a lot of db clients do it, but it is really bad, I need to know if things were saved successfully, wishful programming is bad, you could return the objects after saving them

List&lt;T&gt; saveBatchData(List&lt;T&gt; data);