日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate之CRUD操作

發布時間:2024/7/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate之CRUD操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CRUD是指在做計算處理時的增加(Create)、讀取(Retrieve)(重新得到數據)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫.

下面列舉實例來講解這幾個操作:

實體類:

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;}@Overridepublic 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;}}

映射文件:

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"> <hibernate-mapping package="com.oumyye.model"><class name="Student" table="t_student"><id column="stuId" name="id"><generator class="native"/></id><property column="stuName" generated="never" lazy="false" name="name"/><many-to-one cascade="save-update" class="com.oumyye.model.Class"column="classId" name="c"/></class> </hibernate-mapping> 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"> <hibernate-mapping package="com.oumyye.model"><class name="Class" table="t_class"><id column="classId" name="id"><generator class="native"/></id><property column="className" generated="never" lazy="false" name="name"/><set cascade="delete" inverse="true" name="students" sort="unsorted"><key column="classId"/><one-to-many class="com.oumyye.model.Student"/></set></class> </hibernate-mapping>

工具類:可以有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;}}

配置文件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"><hibernate-configuration><session-factory><!--數據庫連接設置 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/mytest</property><property name="connection.username">root</property><property name="connection.password">root</property><!-- 方言 --><property name="dialect">org.hibernate.dialect.MySQL5Dialect</property><!-- 控制臺顯示SQL --><property name="show_sql">true</property><!-- 自動更新表結構 --><property name="hbm2ddl.auto">update</property><mapping resource="com/oumyye/model/Class.hbm.xml" /><mapping resource="com/oumyye/model/Student.hbm.xml" /></session-factory></hibernate-configuration>

測試類

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=HibernateSessionFactory.getSessionFactory();private Session session;@Beforepublic void setUp() throws Exception {session=sessionFactory.openSession(); // 生成一個sessionsession.beginTransaction(); // 開啟事務 }@Afterpublic void tearDown() throws Exception {session.getTransaction().commit(); // 提交事務session.close(); // 關閉session }@Testpublic void testSaveClassAndStudent() {Class c=new Class();c.setName("08計本");Student s1=new Student();s1.setName("張三");s1.setC(c);Student s2=new Student();s2.setName("李四");s2.setC(c);session.save(s1);session.save(s2);}@Testpublic 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());}@Testpublic void testGetClass(){// Class c=(Class)session.get(Class.class, Long.valueOf(2));Class c=(Class)session.get(Class.class, Long.valueOf(1));System.out.println(c.getStudents());}@Testpublic void testUpdateClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();c.setName("08計算機本科2");session2.update(c);session2.getTransaction().commit(); // 提交事務 session2.close();}<!--更新-->@Testpublic void testSaveOrUpdateClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();c.setName("08計算機本科3");Class c2=new Class();c2.setName("09計算機本科3");session2.saveOrUpdate(c);session2.saveOrUpdate(c2);session2.getTransaction().commit(); // 提交事務 session2.close();}@Testpublic void testMergeClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();Class c2=(Class)session2.get(Class.class, Long.valueOf(1));c.setName("08計算機本科4");session2.merge(c);session2.getTransaction().commit(); // 提交事務 session2.close();}<!--刪除-->@Testpublic void testDeleteStudent(){Student student=(Student)session.load(Student.class, Long.valueOf(1));session.delete(student);} } 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=HibernateSessionFactory.getSessionFactory();private Session session;@Beforepublic void setUp() throws Exception {session=sessionFactory.openSession(); // 生成一個sessionsession.beginTransaction(); // 開啟事務 }@Afterpublic void tearDown() throws Exception {session.getTransaction().commit(); // 提交事務session.close(); // 關閉session }@Testpublic void testSaveClassAndStudent() {Class c=new Class();c.setName("08計本");Student s1=new Student();s1.setName("張三");s1.setC(c);Student s2=new Student();s2.setName("李四");s2.setC(c);session.save(s1);session.save(s2);}@Testpublic 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());}@Testpublic void testGetClass(){// Class c=(Class)session.get(Class.class, Long.valueOf(2));Class c=(Class)session.get(Class.class, Long.valueOf(1));System.out.println(c.getStudents());}@Testpublic void testUpdateClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();c.setName("08計算機本科2");session2.update(c);session2.getTransaction().commit(); // 提交事務 session2.close();}<!--更新-->@Testpublic void testSaveOrUpdateClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();c.setName("08計算機本科3");Class c2=new Class();c2.setName("09計算機本科3");session2.saveOrUpdate(c);session2.saveOrUpdate(c2);session2.getTransaction().commit(); // 提交事務 session2.close();}@Testpublic void testMergeClass(){Session session1=sessionFactory.openSession();session1.beginTransaction();Class c=(Class)session1.get(Class.class, Long.valueOf(1));session1.getTransaction().commit(); // 提交事務 session1.close();Session session2=sessionFactory.openSession();session2.beginTransaction();Class c2=(Class)session2.get(Class.class, Long.valueOf(1));c.setName("08計算機本科4");session2.merge(c);session2.getTransaction().commit(); // 提交事務 session2.close();}<!--刪除-->@Testpublic void testDeleteStudent(){Student student=(Student)session.load(Student.class, Long.valueOf(1));session.delete(student);} }

Session的入門常用方法

  • Query query = session.createQuery(hql):利用hql查詢語句查詢;
  • Criteria critera = session.createCriteria(Class clazz);
  • (3)Transaction tx = session.beginTransaction(); ? ? //開始事務;tx.commit()提交事務;
  • session.close();//關閉Session,此后被session管理的持久化對象變為脫管狀態;
  • session.save(Object obj); ? ?//添加
  • session.update(Object obj); ? ? //更新
  • session.delete(Object obj); ? ?//刪除
  • Object obj = session.get(Class clazz,Serialiazble id); ? ?//根據主鍵查找記錄并返回;
  • Object obj = session.load(Class clazz,Serializable id); ? ?//和get方法效果一樣,但是是懶加載,即在不使用他之前他不會返回對象;

轉載于:https://www.cnblogs.com/zhujiabin/p/4529851.html

總結

以上是生活随笔為你收集整理的hibernate之CRUD操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。