Я понимаю, что такое оптимистическая блокировка и «как она работает», но я не знаю, как реализовать ее в Java EE.
У меня есть объект в JPA, и я добавляю еще один столбец версия , и я пометил его @Version
. Но чтобы иметь оптимистичное управление блокировками, мне нужна только аннотация @Version?
Это мой класс Java:
@Entity
public class MyClass implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
//other variables
@Version
@Column(name = "version")
private int version;
//other code
}
В моем проекте я использую сессионный компонент без состояния , чтобы получить доступ к классу сущности и сохранить больше операций, поэтому я использую @TransactionManagement(TransactionManagementType.CONTAINER)
по умолчанию для обработки моей транзакции.
Мое сомнение:
с @TransactionManagement(TransactionManagementType.CONTAINER)
(независимо от того, что такое @TransactionAttribute
(ОБЯЗАТЕЛЬНО, ОБЯЗАТЕЛЬНО и т. д.)) и только с аннотированием version
переменной в MyClass.java. Я получаю оптимистическое управление блокировками?