Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung des Codes für Hibernate zum Abschließen von CRUD-Vorgängen

Detaillierte Erläuterung des Codes für Hibernate zum Abschließen von CRUD-Vorgängen

Y2J
Y2JOriginal
2017-05-13 11:06:411224Durchsuche

Dieser Artikel stellt hauptsächlich den Beispielcode für Datenbanklösch-, Such- und Aktualisierungsvorgänge vor. Er hat einen bestimmten Referenzwert.

In diesem Abschnitt werden die anderen Vorgänge von Hibernate für die Datenbank fortgesetzt. löschen, abfragen, ändern.

Hibernate-Datenlöschvorgang

Das Löschen eines Datenelements in der Benutzertabelle erfordert den Primärschlüssel-ID-Wert der Benutzertabelle. Zunächst wird das entsprechende -Objekt anhand des ID-Werts aus der Datenbank abgefragt. Es können zwei Methoden verwendet werden: eine ist die Get-Methode von session und die andere ist die Load-Methode von Session.

Methode der Sitzung abrufen: Durch Aufrufen dieser Methode wird ein Objektobjekt zurückgegeben. Dann Casting. Useruser = (User)session.get(User.class“, 402881e5441c035e01441c0360510003“); Wenn wir den ID-Wert übergeben und kein entsprechendes Ergebnis in den Daten finden, gibt die get-Methode einen null-Wert zurück.

Unterschied: Wenn die Get-Methode geladen wird, gibt sie sofort eine SQL-Anweisung zur Abfrage aus, während die Load-Methode bei der Ausführung nicht sofort SQL zur Abfrage ausgibt und ein Proxy-Benutzer generiert wird , aber es wird kein echter Benutzer generiert. Der echte Benutzer wird geladen, wenn wir diesen Benutzer tatsächlich verwenden. Load() unterstützt Lazy Loading, Get() hingegen nicht. Get gibt ein Nullobjekt zurück, wenn das geladene Objekt nicht existiert, und Load() löst eine ObjectNotFoundException aus, wenn das geladene Objekt nicht existiert.

Lademethode der Sitzung: Diese Methode wird auch aufgerufen, um ein Objektobjekt zurückzugeben, und dann wird eine erzwungene Konvertierung durchgeführt.

Dann laden wir das Objekt, das der Benutzertabellen-ID entspricht, über „get“ oder „load“ und rufen dann die delete-Methode der Sitzung auf, um das Objekt zu löschen und einen Datensatz in der Tabelle zu löschen. Der Code lautet wie folgt: Anzeigen.

Die erste Löschmethode


 publicvoid testDel1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         Useruser = (User)session.load(User.class,"402881e5441c035e01441c0360510003");
         
         //删除表中的记录.
         //删除,建议用此种方式删除,先加载再删除.
         session.delete(user);
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

Die zweite Löschmethode ist das manuelle Erstellen getrennter Objekte wird dann gelöscht. Der Code wird unten angezeigt.


 //测试方法以test开头.测试del方法.返回存在的加载的.
      publicvoid testDel2()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         
         //手动构造的Detached对象.
         Useruser =new User();
         user.setId("402881e4441b3d1c01441b3f5dfe0001");
         session.delete(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

Hibernate führt Datenabfragevorgänge durch

Allgemeine Abfrage, der Code lautet wie folgt.


//查询方法.
 publicvoid testQuery1()
 {
   Sessionsession =null;
   try
   {
    session= HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

Seite Abfrage, der Code lautet wie folgt.


//分页查询,从什么地方查,查几个;
 publicvoid testQuery2()
 {
   Sessionsession =null;
   try
   {
    session=HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    //从第一个开始查起.可以设置从第几个查起.
    query.setFirstResult(0);
    //最大条数为两个
    query.setMaxResults(2);
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

Hibernate-Datenaktualisierungsvorgang

Erstellen Sie das getrennte Objekt manuell und rufen Sie die Sitzungsaktualisierung auf ()-Methode lautet der Code wie folgt.


      //测试方法以test开头.测试update方法.返回存在的加载的.
      publicvoid testUpdate1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         
         //手动构造的Detached对象.
         Useruser =newUser();
         user.setId("402881e5441bfb0601441bfb075b0002");
         user.setName("周六");
         
         session.update(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

lädt das Objekt, ruft die update()-Methode der Sitzung auf und aktualisiert das Objekt, wenn es sich im dauerhaften Zustand . Der Code wird unten angezeigt.


 //测试方法以test开头.测试update方法.返回存在的加载的.
      publicvoid testUpdate2()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         
         //先把要更新的查出来.
         //建议采用此种方式,先加载再更新的方式.
         Useruser = (User)session.load(User.class,"402881e5441bfb0601441bfb075b0002");
         //查出来的话就直接放入了.处于持久化状态.
         user.setName("周日");
         
         //显示的调用,因为为持久化状态也可以不显示调用.
         session.update(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exceptione){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }
【Verwandte Empfehlungen】

1. Besondere Empfehlung:

Version „php Programmer Toolbox“ V0.1 herunterladen

2.

Kostenloses Java-Video-Tutorial

3.

YMP-Online-Handbuch

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Codes für Hibernate zum Abschließen von CRUD-Vorgängen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn