Sobes.tech
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 кагылышууну аныктайт жана башка колдонуучунун өзгөртүүлөрүн эске албай, маалыматтарды кайра жазууга жол бербейт.