Hibernate入門:CRUD方法及實體物件的三種狀態

來源:互聯網
上載者:User

Hibernate的實體物件有三種狀態,而實體物件是被Session管理:


(1)瞬態:剛剛被建立出來時的狀態;(2)持久化:被Session管理時的狀態,能夠和資料庫同步;(3)脫管:過去被Session管理,但是現在Session已關閉,雖然存在與資料庫對應的記錄,但是不能同步; Session的入門常用方法
(1)Query query = session.createQuery(hql):利用hql查詢語句查詢;(2)Criteria critera = session.createCriteria(Class clazz);(3)Transaction tx = session.beginTransaction();     //開始事務;tx.commit()提交事務;(4)session.close();//關閉Session,此後被session管理的持久化對象變為脫管狀態;(5)session.save(Object obj);    //添加(6)session.update(Object obj);     //更新(7)session.delete(Object obj);    //刪除(8)Object obj = session.get(Class clazz,Serialiazble id);    //根據主鍵尋找記錄並返回;(9)Object obj = session.load(Class clazz,Serializable id);    //和get方法效果一樣,但是是懶載入,即在不使用他之前他不會返回對象;接下來,我們利用Session的方法,製作一個HibernateUtils類,此類能夠在平時簡化開發流程:
package org.xiazdong.utils;import java.io.Serializable;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public final class HibernateUtils {private static SessionFactory factory;public static Session getSession() {return factory.openSession();}private HibernateUtils() { // 單例模式}static { // 載入虛擬機器時執行一次// configure預設載入hibernate.cfg.xml// 如果不是hibernate.cfg.xml,則指定其他名字,此檔案從classpath中找Configuration config = new Configuration().configure();factory = config.buildSessionFactory();}public static void add(Object obj) {Session session = null;Transaction tx = null;try {session = HibernateUtils.getSession();tx = session.beginTransaction();session.save(obj);tx.commit();} catch (HibernateException e) {if (tx != null) { // 如果存在事務,則復原tx.rollback();}throw e; // 拋出異常} finally {if (session != null) // 如果session存在,則關閉session.close();}}public static void update(Object obj) {Session session = null;Transaction tx = null;try {session = HibernateUtils.getSession();tx = session.beginTransaction();session.update(obj);tx.commit();} catch (HibernateException e) {if (tx != null) { // 如果存在事務,則復原tx.rollback();}throw e; // 拋出異常} finally {if (session != null) // 如果session存在,則關閉session.close();}}public static void delete(Object obj) {Session session = null;Transaction tx = null;try {session = HibernateUtils.getSession();tx = session.beginTransaction();session.delete(obj);tx.commit();} catch (HibernateException e) {if (tx != null) { // 如果存在事務,則復原tx.rollback();}throw e; // 拋出異常} finally {if (session != null) // 如果session存在,則關閉session.close();}}public static Object get(Class clazz, Serializable id) {Session session = null;try {session = HibernateUtils.getSession();Object obj = session.get(clazz, id);return obj;} finally {if (session != null) {session.close();}}}}
測試類別:

package org.xiazdong;import org.xiazdong.utils.HibernateUtils;public class UserTest {public static void main(String[] args) {User u = new User();u.setName("xiazdong-1");u.setAge(20);HibernateUtils.add(u);//使用add方法//此語句System.out.println("加入成功...");u = (User) HibernateUtils.get(User.class,1);//使用get方法System.out.println("擷取的姓名:"+u.getName());}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.