Junior — Middle
Hibernateде маалыматтарга бир убакта кирүүдө кагылышууларды алдын алуу үчүн оптимисттик блоктоо механизмин кантип ишке ашырууга болот?
sobes.tech AI
AIден жооп
Hibernateде оптимисттик блоктоо @Version аннотациясы аркылуу ишке ашырылат. Бул аннотация объектке (мисалы, version) өзгөчө бир талаа кошот, ал автоматтык түрдө ар бир жазууну жаңыртууда көбөйөт. Сактоо учурунда Hibernate базадагы версия менен жаңыланып жаткан объекттин версиясын салыштырат. Эгер версиялар дал келбесе, бул башка бир транзакция тарабынан маалыматтар өзгөртүлгөнүн билдирет жана OptimisticLockException ката чыгарылаары белгиленет.
Мисал:
@Entity
public class Product {
@Id
private Long id;
@Version
private int version;
private String name;
private int quantity;
// getter жана setter
}
Ошентип, бир убакта бир эле жазууга кирүүдө, эгер бир колдонуучу маалыматтарды жаңыртса жана башка колдонуучу эски версияны сактоого аракет кылса, Hibernate кагылышууну аныктайт жана башка колдонуучунун өзгөртүүлөрүн эске албай, маалыматтарды кайра жазууга жол бербейт.