国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

hibernate session method

2019-11-14 22:17:51
字體:
供稿:網(wǎng)友
hibernate session method
import static org.junit.Assert.*;import java.io.FileInputStream;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class App {    PRivate SessionFactory sessionFactory = new Configuration()                                            .configure()                                            .addClass(User.class)                                            .buildSessionFactory();        @Test        public void testSave() throws Exception{        //save 把臨時(shí)狀態(tài)轉(zhuǎn)變?yōu)槌志脿顟B(tài)(交給session管理)        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------            User user = new User();//臨時(shí)狀態(tài):數(shù)據(jù)庫中沒有對應(yīng)的記錄,跟session沒有聯(lián)系            user.setName("test");                        session.save(user);//持久狀態(tài):在session的管理中最終數(shù)據(jù)庫中會(huì)有對應(yīng)的記錄//            session.save(user);//save是立即執(zhí)行(如果主鍵是由自己指定的那也是在flush()中執(zhí)行),delete和update都是默認(rèn)在flush()執(zhí)行//            session.save(user);//同一個(gè)對象執(zhí)行多次保存,只會(huì)保存一個(gè)到session集合,session管理的是同一個(gè)對象//            session.save(user);                        user.setName("賤賤");//持久狀態(tài):會(huì)自動(dòng)更新數(shù)據(jù)庫中的內(nèi)容                //------------------------            tx.commit();//默認(rèn)調(diào)用flush()并執(zhí)行所有的SQL語句            session.close();//關(guān)閉session            System.out.println(user);//session關(guān)閉之后變?yōu)橛坞x狀態(tài),數(shù)據(jù)庫中有記錄,和session沒有聯(lián)系            user.setName("小賤aaaa");//游離狀態(tài)修改對象數(shù)據(jù)庫不會(huì)更新    }            //把游離狀態(tài)轉(zhuǎn)變?yōu)槌志脿顟B(tài)    //在更新時(shí)對象不存在會(huì)報(bào)錯(cuò)    @Test    public void testUpadet() throws Exception {        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------        User user = (User) session.get(User.class, 1);        System.out.println(user);//持久化狀態(tài)        user.setName("小san");//        session.flush();//立即執(zhí)行,更新到數(shù)據(jù)庫                System.out.println("----------------");        //        session.clear();//清除session中所有的對象,user變?yōu)橛坞x狀態(tài)//        session.evict(user);//清除session中user,user變?yōu)橛坞x狀態(tài)        //        session.update(user);//commit()執(zhí)行游離狀態(tài)轉(zhuǎn)變?yōu)槌志脿顟B(tài)        System.out.println("----------------");            //--------------------        tx.commit();        session.close();    }                @Test    public void testSaveOrUpdate() throws Exception {        //把臨時(shí)游離狀態(tài)轉(zhuǎn)變?yōu)槌志脿顟B(tài)        //在更新時(shí)對象不存在會(huì)報(bào)錯(cuò)        //本方法是根據(jù)id來判斷對象是什么狀態(tài),如果id是原始值(臨時(shí)狀態(tài))就insert,如果不是原始值(游離狀態(tài))就update,        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------        User user = new User();//id原始值//        user.setId(1);//設(shè)置了Id,執(zhí)行update語句,如果數(shù)據(jù)庫中沒有就報(bào)錯(cuò)        user.setName("張三");        session.saveOrUpdate(user);            //--------------------        tx.commit();        session.close();    }            @Test    public void testDelete() throws Exception {        //把持久化和游離狀態(tài)轉(zhuǎn)化為刪除狀態(tài)        //如果刪除的對象不存在拋異常        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------//        User user = (User) session.get(User.class, 15);//        session.delete(user);//刪除持久化對象                User user = new User();        user.setId(16);//模擬游離對象        session.delete(user);//刪除游離對象        //--------------------        tx.commit();        session.close();    }        @Test    public void testGet(){        //獲取對象,持久化狀態(tài)        //如果對象不存在,返回null        //馬上執(zhí)行SQL語句        //返回的是真實(shí)對象        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------                User user = (User) session.get(User.class, 1);        System.out.println("---------------------");                //------------------------        tx.commit();        session.close();    }            @Test    public void testLoad() throws Exception {        //獲取數(shù)據(jù),是持久化狀態(tài)        //延時(shí)加載,不立即執(zhí)行SQL語句,而是在使用到除了(User.class, id)才執(zhí)行SQL語句,用到數(shù)據(jù)庫的數(shù)據(jù)才加載        //返回的是代理對象        //延時(shí)加載的實(shí)體類不能是final,否則不能生成子類代理        //如果數(shù)據(jù)不存在就跑異常objectNotFoundException        //讓延時(shí)加載失效的方式:讓實(shí)體類寫成final,或者在**.hbm.xml中配置<class... lazy="false">        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------        User user = (User) session.load(User.class, 1);//返回的是代理對象        System.out.println(user.getId());        System.out.println(user.getClass());        //        System.out.println(user.getName());//立即執(zhí)行SQL語句                //--------------------        tx.commit();        session.close();    }    @Test    public void testBatchSave() throws Exception {        //操作大量數(shù)據(jù)要防止session中對象過多而內(nèi)存溢出        Session session = sessionFactory.openSession();        Transaction tx = session.beginTransaction();        //------------------------        for (int i = 0 ;i<1000 ; ++i){            User user = new User();            user.setName("大數(shù)據(jù)");            session.save(user);            if(i%10 == 0){                session.flush();//先提交                session.clear();//在清空            }        }                //--------------------        tx.commit();        session.close();    }        }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沁阳市| 丰原市| 拜泉县| 平原县| 乐山市| 盐池县| 三都| 固阳县| 句容市| 宣威市| 同心县| 正阳县| 兴和县| 河间市| 荣昌县| 翁源县| 乌海市| 阿图什市| 景德镇市| 涞源县| 社旗县| 通道| 马鞍山市| 垣曲县| 阿勒泰市| 苍溪县| 景宁| 哈尔滨市| 从化市| 若尔盖县| 枣庄市| 邮箱| 岫岩| 永济市| 五家渠市| 益阳市| 临沂市| 布拖县| 合山市| 新宾| 汉中市|