JavaRush /Kurslar /All lectures for TK purposes /Entity Obýektleri bilen İşlemek

Entity Obýektleri bilen İşlemek

All lectures for TK purposes
Dereje , Sapak
Elýeterli

4.1 Amallar we maglumat binýadynyň bitewüligi

Maglumat binýady adaty ýagdaýda işleýärde, minutda müňlerçe soraglar ýüzlerçe dürli müşderilerdan gelip dur. Şu ýagdaýda, käte şol bir maglumatlara dürli soraglardan ýüzlenmeler bar. Bu tejribede gabat gelýär.

Seýrek bolup biler, ýöne käte şeýle ýagdaý bolýar: bir sorag bir setiri okaýar, emma başga bir sorag şol wagt ony üýtgedýär. Diňe ýarym üýtgedilen setiri biri okasa nätjek pikir et? Bu gowy däl.

Bu meseleni dürli usullar bilen çözdüler. Birinjiden, bir setir üýtgädilerkä ony ýüki ýaly kilitlemek mümkin. Bu usul işleýär, emma maglumat binýadyň tizligi peselýär.

Ikinji usul — diňe ýazga ýüki ýaly kilitlemek. Ýüke ýagdaýda, biri ýarym üýtgedilen setiri okajak bolsa hem problema bolar. Netije: ýarym üýtgedilen setir bolmaly däl.

Şonuň üçin üçünji usul tapyldy — amallar. Amallar, ähli hereketleriň ýekemekä ýa-da hiç biriniň ýerine ýetirilmeýän topary. Döwlet, hereketleriň bir böleginiň ýerine ýetirilip, beýleki böleginiň ýerine ýetirilmeýän ýagdaýy bolup bilmez. Eger ähli üýtgeşmeler edilip bilmese, öň etmeli üýtgeşmeler yzyna alynýar.

Häzirki zaman SQL-serwerleri diňe amala goýulmaly üýtgeşmeleri etmäne mümkinçilik berýär. Sen amala açyp goýarsyň, islendik tablisalarda islendik üýtgeşmeleri edersiň, soň amala goýarsyň. Soň SQL-serwer üýtgeşmeleri edýäni synap görer. Eger her zat gowy bolsa, olar umumy maglumat binýadyna goşular. Eger meseleler ýüze çyksa, ähli üýtgeşmeler ýatyrlar.

Hibernate hem şu paradygma ulanýar. Şu sebäpli öňki dersde, maglumata Employee obýektini saklamaga synanyşanymyzda ilkinjiden amala açylýan, soň bolsa saklanýanda amala geçirilýän.

Bu mowzuky has giňişleýin ara alarys, ýöne şuwagt amallaryň näme üçin gerek we nirede ulanylýandygyny bil.

4.2 Obýektleriň alnyşy

Eger Hibernate maglumat almak üçin sorag edýäniňde, görnetin amala açmak gerek däl. Hibernate gerek bolsa özi açar: onuň özüni sazlamalary bar, hem SQL-serweriň sazlamalary hem bar.

Biz sen bilen maglumat binýady bilen işlemek usullaryny görüneris. Ýönekeýi usul — bu obýektiň ID-ine görä almak. Bu üçin session obýektiniň get() metodyny ulanmaly. Şuňa meňzeş soragyň görnüşi:


Klass at = session.get(Klass.class, ID);
        

Mysal:


public User getUserById(Integer id) {
    try (Session session = sessionFactory.openSession()) {
        User user = session.get(User.class, id);
        return user;
    }
}

4.3 Obýektleriň saklanmasy (goşulmasy)

Eger sen obýekti maglumata saklamagy isleseň, SQL derejesinde INSERT soragy ýerine ýetirilýär. Şonuň üçin seniň işlemegiň amala görnüşinde bolmaly. Munuň üstüne, saklamak üçin session obýektiniň persist() metodyny ulanmak gowudyr.

Şuňa meňzeş soragyň görnüşi:


session.persist(Objekt);
        

persist() metody diňe maglumata däl, özüni obýekti hem üýtgedýär. Sebäbi, obýekt maglumata goşulmajak ýaly, onuň ID ýok. Adatça şeýle bolýar, emma käte aýratynlyklar bar. Goşulandan soň obýektiň ID bolar.


public boolean saveUser(User user) {
    try (Session session = sessionFactory.openSession()) {
            Transaction transaction = session.beginTransaction();
            session.persist(user);
            transaction.commit();
            return true;
    }
    catch() {
    return false;
   	}
}

Häzirki zaman Session obýektiniň save() metody hem bolup, şol işlevi ýerine ýetirýär. save() metody — bu Hibernate köne standarty, persist() metody — bu JPA-standarty.

4.4 Obýektleriň öçürilmesi

Eger bardaki obýekti öçürmek isleseň, bu örän aňsat. Bunuň üçin session obýektiniň aýratyn metody bar — remove().

Şuňa meňzeş soragyň görnüşi:


session.remove(Objekt);
        

Elbetde, mysal bilen kody ýazarys:


public boolean removeUser(User user) {
    try (Session session = sessionFactory.openSession()) {
            Transaction transaction = session.beginTransaction();
            session.remove(user);
            transaction.commit();
            return true;
    }
    catch() {
    return false;
   	}
}

Näme üçin şeýle çylşyrymly diýip sorarsyň?

Ilki bilen, maglumata edilen her üýtgeşiklik mümkin bolýan we hemişe açyk bolmaýan dürli netijeleri getirýär. Şeýle hem, obýekti bilen baglanyşykly çaga obýektler we ş.m. bolup biler. Şonuň üçin öçürmek boýunça ssenariýler köplenç täsin bolýar.

Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION