8.4 - Inserció, modificació i esborrat d'objectes
En totes aquestes operacions d'actualització, recordem que farà falta posar-les en una transacció per a que tinguen efecte.
Inserció
Nota
A partir de la versió 6.0 d'Hibernate, save() està deprecated, en favor de persist()
Es fa amb els mètodes save() o persist() de la sessió, passant-li l'objecte que volem guardar. Posem el mateix exemple de l'apartat 8.1, el d'inserir una comarca. Copieu l'exemple en un fitxer anomenat Exemple_11_Insercio.kt :
package exemples
import classes.Comarca
import org.hibernate.cfg.Configuration
import java.util.logging.Level
import java.util.logging.LogManager
fun main(args: Array<String>) {
LogManager.getLogManager().getLogger("").setLevel(Level.SEVERE)
val sessio = Configuration().configure().buildSessionFactory().openSession()
val t = sessio.beginTransaction ()
val com = Comarca()
com.nomC = "Columbretes"
com.provincia = "Castelló"
sessio.persist(com)
t.commit()
sessio.close()
}
Podem comprovar en la taula com apareix la comarca que acabem d'introduir:

I evidentment ho podríem comprovar des de DBeaver
Esborrat
Nota
A partir de la versió 6.0 d'Hibernate, delete() està deprecated, en favor de remove()
Amb els mètodes delete o remove, passant-li com a paràmetre l'objecte. Prèviament s'ha d'haver carregar l'objecte amb els mètodes load() o get(). Copieu el següent exemple en el fitxer Exemple_12_Esborrat.kt:
package exemples
import org.hibernate.cfg.Configuration
import java.util.logging.Level
import java.util.logging.LogManager
fun main(args: Array<String>) {
LogManager.getLogManager().getLogger("").setLevel(Level.SEVERE)
val sessio = Configuration().configure().buildSessionFactory().openSession()
val t = sessio.beginTransaction()
val com = sessio.get("classes.Comarca", "Columbretes")
sessio.remove(com)
t.commit()
sessio.close()
}
Modificació
Nota
A partir de la versió 6.0 d'Hibernate, update() està deprecated, en favor de merge()
Amb el mètode update() o merge(), passant-li com a paràmetre l'objecte. Prèviament haurà d'haver estat carregat amb els mètodes load() o get(), igual que en el cas d'esborrar.
En el següent exemple estem canviant la província del Camp de Morvedre. Per a que no tinga efecte aquest canvi, i no modificar les dades que està utilitzant la resta de companys, observeu com al final estem fent un rollback. Copieu el següent en el fitxer Exemple_13_Modificacio.kt :
package exemples
import classes.Comarca
import org.hibernate.cfg.Configuration
import java.util.logging.Level
import java.util.logging.LogManager
fun main(args: Array<String>) {
LogManager.getLogManager().getLogger("").setLevel(Level.SEVERE)
val sessio = Configuration().configure().buildSessionFactory().openSession()
val t = sessio.beginTransaction()
val com = sessio.get("classes.Comarca", "Camp de Morvedre") as Comarca
com.provincia = "Castelló"
sessio.merge(com)
t.rollback()
sessio.close()
}
En realitat tant el mètode persist() com el mètode merge() serveixen tant per a actualitzar un objecte ja existent (que ja era persistent) com per a crear-ne un nou si no existia.
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 2.5