Aujourd'hui, j'ai appris à ajouter, supprimer, modifier et vérifier la base de données via Hibernate. Permettez-moi de le présenter brièvement:
Créez d'abord une classe étudiante:
package com.hibernate.model; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.pepersistence.table; @entity @table (name = "_teacher") enseignant de classe publique {private int id lieu de naissance; @id @GeneratedValue @Column (name = "_id") public int getID () {return id;} public void setid (int id) {this.id = id;} @ colonnel (name = "_name") public string getName () {return name;} public void setName (String Name) {this.Name = name;} @ column (name = ")") ")") ")") ")") ")") ")") ")") ")") ")") ")") ")") ")") ") int getage () {return age;} public void setage (int age) {this.age = age;} @ colonnel (name = "_birthplace") public string getBirthplace () {return naissanceplace;} public void setBirthplace (String Birthplace) {this.birthPlace = Birthplace;}}} SetBirthplace (String Birthplace) {this.birthplace = naissance;}}} Créez ensuite un cas de test de type Teachest de Type:
Parlons d'abord de la méthode session.save (), c'est-à-dire Ajouter:
package com.hibernate.model; import org.hibernate.query; import org.hibernate.session; import org.hibernate.essionfactory; import org.hibernate.cfg.annotationConfiguration; import org.junit.afterClass; Public Class; statique sessionfactory sf = null; @beforeclass public static void beforeclass () {try {sf = new annotationConfiguration (). configure (). buildSessionFactory (); // il est préférable d'obtenir l'exception ici, car il y a un bug qui apparaît parfois et parfois ne semble pas}. void testsave () {// augmenter l'enseignant t = new Teacher (); t.Setage (23); t.setName ("moluo"); t.setBirthplace ("Huangshan"); session session = sf.getCurrentSession (); session.begintransaction (); session.save (t); session.getTransaction (). AfterClass () {sf.close ();}}Résultats lumineux:
Parlons de la méthode session.delete (), c'est-à-dire supprimer:
@Test public void testdelete () {// supprimer le professeur t = new Teacher (); t.SetId (2); session session = sf.getCurrentession (); session.begintransaction (); session.delete (t); session.getTransaction (). Commit ();};Résultats lumineux:
Ensuite, allez sur session.get (), c'est-à-dire vérifier:
@Test public void testGet () {// obtenir session session = sf.getCurrentession (); session.begintransaction (); Enseignant t = (professeur) session.get (enseignante.class, 1); System.out.println ("name:" + t.getName ()); session.getTransaction (). commit (); }Résultats lumineux:
Hibernate: Sélectionnez Teacher0 _._ ID AS COLUMN1_1_0_, professeur0 _._ As As Column2_1_0_, Teacher0 _._ Birth Blance As Column3_1_0_, Teacher0 _._ Nom As Column4_1_0_ From _teacher Teacher0_ Where Teacher0 __ id =? Le nom est: moluo
Prenons une autre méthode de requête: session.load ():
@Test public void testLoad () {// Charge Session Session = sf.getCurrentession (); session.begintransaction (); Enseignant t = (professeur) session.load (Teacher.class, 1); System.out.println ("name:" + t.getName ()); session.getTransaction (). commit (); }Résultats lumineux:
Hibernate: Sélectionnez Teacher0 _._ ID AS COLUMN1_1_0_, professeur0 _._ As As Column2_1_0_, Teacher0 _._ Birth Blance As Column3_1_0_, Teacher0 _._ Nom As Column4_1_0_ From _teacher Teacher0_ Where Teacher0 __ id =? Le nom est: moluo
Ici, nous expliquons la différence entre ces deux requêtes: tout d'abord, lorsque l'objet à requête n'existe pas, les informations retournées sont différentes. Get Method reviendra: java.lang.nullpointerException
La méthode de charge reviendra: org.hibernate.ObjectNotFoundException: NorowwiththeGiveentifiererexists
Deuxièmement, la charge renvoie un objet proxy et les instructions SQL seront publiées lorsqu'elle sera réellement utilisée; De plus, obtenez des données de charge directement à partir de la base de données, sans délai.
Enfin, parlons des méthodes de mise à jour les plus couramment utilisées et mettons-les à jour via des instructions HQL:
@Test public void TESTUPDATE () {// Update Session Session = SF.getCurrentession (); session.begintransaction (); String url = "Mettre à jour le professeur t set t.birthplace = 'anhui' où id = 1"; // Notez que l'enseignant ici doit être le nom de l'objet, pas le nom de la table, t est l'alias de la requête d'objet Q = session.createeQuery (URL); // Le package importé ici est: import org.hibernate.query; Q.ExecuteUpdate (); session.getTransaction (). commit (); }Résultats lumineux:
Grâce à la mise à jour, la ville natale de Moro a été mise à jour de Huangshan à Anhui ...
En fait, il existe la méthode de mise à jour de session.update (), mais cette méthode de mise à jour n'est que cette méthode de mise à jour. Si vous mettez à jour uniquement une partie des colonnes à la fois, cette méthode de mise à jour mettra à jour toutes les colonnes, ce qui n'est pas très efficace, il n'est donc pas recommandé de les utiliser. Bien sûr, il existe également des moyens de compenser eux. Par exemple, si vous utilisez XML, vous pouvez définir UpdateS = "FALSE" dans la balise de propriété d'une colonne que vous ne souhaitez pas être mise à jour dans le fichier de configuration; De plus, vous pouvez également définir des mises à jour dynamiques après la classe du fichier de configuration: dynamic-update = "true"; Bien sûr, si vous utilisez l'annotation, vous pouvez définir @Column (Update = "false"); En fait, ceux-ci ne sont pas flexibles, et utiliser HQL est le meilleur, donc seul le code de mise à jour HQL est publié ici.
Résumer
Ce qui précède est tout le contenu de cet article sur l'analyse de l'exemple d'Hibernate d'ajout, de supprimer, de modifier et de rechercher les opérations via la session. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent se référer à ce site:
Apprenez rapidement sur la session en hibernate
Hibernate Attribut Niveau Annotation Instance Code
HiberNate utilise HBM.XML pour configurer l'analyse des relations de cartographie
S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!