Я пытаюсь использовать Kundera в качестве реализации JPA поверх cassandra (а именно для возможностей управления транзакциями).
2 вопроса:
ПЕРВЫЙ ВОПРОС
правда ли, что управление транзакциями не поддерживает собственные запросы? то есть, если я делаю:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("piccandra", getCassandraProperties());
EntityManager em = emf.createEntityManager();
em.setFlushMode(FlushModeType.COMMIT);
em.getTransaction().begin();
Query q = em.createNativeQuery("insert into photographer (photographer_id, photographer_name) values ('id1', 'name1')");
q.executeUpdate();
em.getTransaction().rollback();
откат не пройдет?
ВТОРОЙ ВОПРОС
как выполнить оптимистическую блокировку (также известную как CAS) при сохранении? В кассандре я могу запустить:
UPDATE photographer SET name = 'x' WHERE id = 1 AND update_date <= some-timestamp
При использовании Кундеры я хочу сохранить сущность только в том случае, если она не была изменена кем-то еще в базовом хранилище. Я могу это сделать?
РЕДАКТИРОВАТЬ: я вижу, что JPA поддерживает оптимистическую блокировку, но Кундера не реализует ее.