Java framework --- CRUD operations of hibernate, --- hibernatecrud

Source: Internet
Author: User

Java framework --- CRUD operations of hibernate, --- hibernatecrud

CRUD refers to the abbreviation of the first letter of the words "Create", "Retrieve", "Update", and "Delete" during computing.

The following examples are provided to illustrate these operations:

Entity class:

package com.oumyye.model;public class Student {    private long id;    private String name;    private Class c;        public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }            public Class getC() {        return c;    }    public void setC(Class c) {        this.c = c;    }    @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + "]";    }        }

 

package com.oumyye.model;import java.util.HashSet;import java.util.Set;public class Class {    private long id;    private String name;    private Set<Student> students=new HashSet<Student>();        public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Set<Student> getStudents() {        return students;    }    public void setStudents(Set<Student> students) {        this.students = students;    }        }

Ing file:

Student.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"                                   "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
Class.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"                                   "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

Tool: generated by myeclipse

package com.oumyye.util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;import org.hibernate.cfg.AnnotationConfiguration;/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution.  Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */public class HibernateSessionFactory {    /**      * Location of hibernate.cfg.xml file.     * Location should be on the classpath as Hibernate uses       * #resourceAsStream style lookup for its configuration file.      * The default classpath location of the hibernate config file is      * in the default package. Use #setConfigFile() to update      * the location of the configuration file for the current session.        */    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();    private static org.hibernate.SessionFactory sessionFactory;        private static Configuration configuration = new AnnotationConfiguration();    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";    private static String configFile = CONFIG_FILE_LOCATION;    static {        try {            configuration.configure(configFile);            sessionFactory = configuration.buildSessionFactory();        } catch (Exception e) {            System.err.println("%%%% Error Creating SessionFactory %%%%");            e.printStackTrace();        }    }    private HibernateSessionFactory() {    }        /**     * Returns the ThreadLocal Session instance.  Lazy initialize     * the <code>SessionFactory</code> if needed.     *     *  @return Session     *  @throws HibernateException     */    public static Session getSession() throws HibernateException {        Session session = (Session) threadLocal.get();        if (session == null || !session.isOpen()) {            if (sessionFactory == null) {                rebuildSessionFactory();            }            session = (sessionFactory != null) ? sessionFactory.openSession()                    : null;            threadLocal.set(session);        }        return session;    }    /**     *  Rebuild hibernate session factory     *     */    public static void rebuildSessionFactory() {        try {            configuration.configure(configFile);            sessionFactory = configuration.buildSessionFactory();        } catch (Exception e) {            System.err.println("%%%% Error Creating SessionFactory %%%%");            e.printStackTrace();        }    }    /**     *  Close the single hibernate session instance.     *     *  @throws HibernateException     */    public static void closeSession() throws HibernateException {        Session session = (Session) threadLocal.get();        threadLocal.set(null);        if (session != null) {            session.close();        }    }    /**     *  return session factory     *     */    public static org.hibernate.SessionFactory getSessionFactory() {        return sessionFactory;    }    /**     *  return session factory     *     *    session factory will be rebuilded in the next call     */    public static void setConfigFile(String configFile) {        HibernateSessionFactory.configFile = configFile;        sessionFactory = null;    }    /**     *  return hibernate configuration     *     */    public static Configuration getConfiguration() {        return configuration;    }}

Configuration File hibernate. cfg. xml

<? Xml version = '1. 0' encoding = 'utf-8'?> <! DOCTYPE hibernate-configuration PUBLIC "-// Hibernate/Hibernate Configuration DTD 3.0 // EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 

Test class

Package com. oumyye. service; import java. util. iterator; import java. util. set; import org. hibernate. session; import org. hibernate. sessionFactory; import org. junit. after; import org. junit. before; import org. junit. test; import com. oumyye. model. class; import com. oumyye. model. student; import com. oumyye. util. hibernateSessionFactory; public class StudentTest {private SessionFactory sessionFactory = HibernateSessionFac Invalid. getSessionFactory (); private Session session; @ Before public void setUp () throws Exception {session = sessionFactory. openSession (); // generates a session. beginTransaction (); // enable transaction} @ After public void tearDown () throws Exception {session. getTransaction (). commit (); // submit the transaction session. close (); // close the session} @ Test public void testSaveClassAndStudent () {Class c = new Class (); c. setName ("08"); S Tudent s1 = new Student (); s1.setName ("Zhang San"); s1.setC (c); Student s2 = new Student (); s2.setName ("Li Si"); s2.setC (c ); session. save (s1); session. save (s2) ;}@ Test public void testLoadClass () {// Class c = (Class) session. load (Class. class, Long. valueOf (2); Class c = (Class) session. load (Class. class, Long. valueOf (1); System. out. println (c. getStudents ();} @ Test public void testGetClass () {// Class c = (Class) sess Ion. get (Class. class, Long. valueOf (2); Class c = (Class) session. get (Class. class, Long. valueOf (1); System. out. println (c. getStudents ();} @ Test public void testUpdateClass () {Session session1 = sessionFactory. openSession (); session1.beginTransaction (); Class c = (Class) session1.get (Class. class, Long. valueOf (1); session1.getTransaction (). commit (); // submit the transaction session1.close (); Session session2 = sessionFactor Y. openSession (); session2.beginTransaction (); c. setName ("08 2 2 2 2"); session2.update (c); session2.getTransaction (). commit (); // submit the transaction session2.close () ;}<! -- Update --> @ Test public void testSaveOrUpdateClass () {Session session1 = sessionFactory. openSession (); session1.beginTransaction (); Class c = (Class) session1.get (Class. class, Long. valueOf (1); session1.getTransaction (). commit (); // submit the transaction session1.close (); Session session2 = sessionFactory. openSession (); session2.beginTransaction (); c. setName ("08 3 3 3 3"); Class c2 = new Class (); c2.setName ("09 3 3 3 3"); session2. SaveOrUpdate (c); session2.saveOrUpdate (c2); session2.getTransaction (). commit (); // submit the transaction session2.close () ;}@ Test public void testMergeClass () {Session session1 = sessionFactory. openSession (); session1.beginTransaction (); Class c = (Class) session1.get (Class. class, Long. valueOf (1); session1.getTransaction (). commit (); // submit the transaction session1.close (); Session session2 = sessionFactory. openSession (); session2.be GinTransaction (); Class c2 = (Class) session2.get (Class. class, Long. valueOf (1); c. setName ("08 4 4 4 4"); session2.merge (c); session2.getTransaction (). commit (); // submit the transaction session2.close () ;}<! -- Delete --> @ Test public void testDeleteStudent () {Student student = (Student) session. load (Student. class, Long. valueOf (1); session. delete (student );}}
Common Methods for getting started with sessions
  • Query query = session. createQuery (hql): queries using hql Query statements;
  • Criteria cricriteria = session. createCriteria (Class clazz );
  • (3) Transaction tx = session. beginTransaction (); // start Transaction; tx. commit () commit Transaction;
  • Session. close (); // close the Session, and the persistent object managed by the session becomes out of management;
  • Session. save (Object obj); // Add
  • Session. update (Object obj); // update
  • Session. delete (Object obj); // delete
  • Object obj = session. get (Class clazz, Serialiazble id); // query records based on the primary key and return results;
  • Object obj = session. load (Class clazz, Serializable id); // The effect is the same as that of the get method, but it is lazy. That is, the Object is not returned before the get method is used;

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.