Мне сложно не повторять себя в Java-программе, над которой я сейчас работаю.
Скажем, мне нужно объявить множество методов, которые в основном структурированы следующим образом:
public SomeEntity doSomething (String someAttribute, String anotherAttribute) {
EntityManager em = this.createEntityManager();
EntityTransaction tx = null;
try {
/*
* ... independent logic ...
*/
tx = em.getTransaction();
} catch (RuntimeException e) {
if (tx != null && tx.isActive()) {
tx.rollback();
}
throw e;
} finally {
em.close();
}
return something;
}
Тело метода всех методов должно содержать тезисы элементов управления ресурсами.
Сама "независимая логика" будет довольно сложной, поэтому постановка инструкции try/catch отдельным методом не будет работать.
Я хочу избежать повторения этого кода. Каковы наилучшие методы применения в этих ситуациях?