Я разрабатываю веб-сервис, которым будут пользоваться несколько клиентов.Я использую EclipseLink в качестве поставщика JPA.При вызове метода в веб-сервисе от клиента, я заметил, что EclipseLink использует поток в пуле потоков для вызова метода, что означает, что метод может быть вызван одновременно из разных потоков в этом пуле потоков.
В некоторых методах я выполняю некоторые критические записи в некоторые таблицы в базе данных, и мне нужно реализовать какой-то механизм блокировки.Это хорошая практика для синхронизации методов при записи в базу данных или мне нужно заблокировать всю таблицу в MySQL?
Некоторые записи выглядят так в псевдокоде:
1. insert_into_TableA(getLastInsertedIdInTableA + 1);
2. insert_into_TableB(getLastInsertedIdInTableB + 1);
3. int id_A = getLastInsertedIdInTableA + 1;
4. int id_B = getLastInsertedIdInTableB + 1;
5. insert_into_TableAB(id_A, id_B);
Структура базы данных ниже:
TableA TableAB TableB
pk tableA_id pk tableA_id pk tableB_id
pk tableB_id
Мой второй вопрос: я не использую autoincrement
в своих таблицах, поэтому рекомендуется вставлять новые строки, чтобы получить идентификатор последней вставленной строкиа затем просто увеличить его на 1, чтобы вставить новую строку?Или я могу использовать некоторые хорошие методы в EclipseLink, чтобы сделать это для меня?