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;