Вы можете добавить новый метод в MyServiceImpl
, который вызывает оба метода createEntity()
внутри. После этого вся бизнес-логика внутри этого метода будет обрабатываться транзакционно и автоматически откатываться при возникновении RuntimeException (используйте rollBackFor для проверенных исключений), поскольку ваш класс обслуживания помечен как trasactional. Также все открытые методы из MyServiceImpl
становятся транзакционными, если вы добавите аннотацию @Transactional
в ваш класс. Нет необходимости в отдельной аннотации для ваших методов (кроме случаев, когда вы хотите изменить некоторые параметры транзакции, такие как изоляция, распространение и т. Д.)
существует большая рецензия на наборах Java, которая удовлетворяет большинство Ваших потребностей.
короткий совет относительно этого: используйте TreeMap (Компаратор c) с пользовательским Компаратором. ключ является строкой, значение является составным объектом со строкой и числом
Это походит на SortedMap. Со Строкой как ключ и Число как значение.
Кроме SortedMap, у Вас мог быть a
где Вы предоставляете компаратор, чтобы отсортировать пар (или заставить Ваш Парный класс реализовать Сопоставимый и сделать это там).TreeSet<Pair<String, Number>>
Это разделяет объекты от структуры данных, и пока для тривиального примера как это это не грандиозное предприятие, можно предположить, что TreeSet <MyObject>, где MyObject реализует Сопоставимый, легче к grok в долгосрочной перспективе.
Если у Вас есть дублирующееся строковое значение среди объектов в списке, Вы могли бы хотеть посмотреть на Наборы Google TreeMultimap. С TreeMultimap не только отсортированы ключи, но и все значения, имеющие тот же ключ, также хранятся в наборе.
Multimap<String, Pair> mm = new TreeMultimap<String, Pair>(
new Comparator<String>(){...},
new PairComparator());
mm.put("A", new Pair("A", 1));
mm.put("B", new Pair("B", 2));
mm.put("B", new Pair("B", 3));
Collection values = mm.values();
// values are [Pair("A", 1), Pair("B", 2), Pair("B", 3)]
Collection bValues = mm.get("B");
// bValues are [Pair("B", 2), Pair("B", 3)]
Я сделал что-то похожее на это, я использовал ArrayList для хранения их объектов и записи компараторов для сортировки arrayylist.