zoukankan      html  css  js  c++  java
  • hibernate 之 hibernate实现(crud)增删改查 , 封装hibernate工具类

    1.封装工具类:

    public class HibernateUtil {
        private static Configuration cfg=null;
        private static ServiceRegistry registry;
        private static SessionFactory factory = null;
        private static ThreadLocal<Session> session=new ThreadLocal<Session>();
        static{
            cfg = new Configuration().configure();
            registry = new StandardServiceRegistryBuilder()
            .applySettings(cfg.getProperties())
            .build();
            factory = cfg.buildSessionFactory(registry);
        }
        public static Session getSession(){
            if(session.get()==null){
                session.set(factory.openSession());
            }
            return session.get();
        }
        public static void close(){
            if(session.get()!=null)
            {
                session.get().close();
                session.set(null);
            }
        }
    }

    2. crud实现:

    public class HibernateTest {
        private Session session=null;
        @Before
        public void setUp(){
            session = HibernateUtil.getSession();
        }
        @After
        public void tearDown(){
            HibernateUtil.close();
        }
        //查询单个对象
        @Test
        public void testFindOne(){
            User user=(User)session.get(User.class, 2);
            System.out.println(user);
        }
        //查询所有
        @Test
        public void testFindAll(){
            List<User> list = session.createCriteria(User.class).list();
            for(User u:list){
                System.out.println(u);
            }
        }
        //保存--hibernate和jdbc不一样 
        //jdbc事务默认自动提交 
        //hibernate的事务需要手动提交
        @Test
        public void testSave(){
            User user = new User();
            user.setName("刘德华");
            user.setAge(55);
            Transaction tx =null;
            try {
                //获取事务对象  并且开启事务
                tx = session.beginTransaction();
                /*Transaction tx = session.getTransaction();
                tx.begin();*/
                session.save(user);
                //提交事务
                tx.commit();
            } catch (Exception e) {
                e.printStackTrace();
                if(tx!=null)
                    tx.rollback();//回滚事务
            }
        }
        @Test
        public void testDelete(){
            Transaction tx =null;
            try {
                //获取事务对象  并且开启事务
                tx = session.beginTransaction();
                /*Transaction tx = session.getTransaction();
                tx.begin();*/
                User user = (User)session.get(User.class, 1);
                session.delete(user);
                //提交事务
                tx.commit();
            } catch (Exception e) {
                e.printStackTrace();
                if(tx!=null)
                    tx.rollback();//回滚事务
            }
        }
        @Test
        public void testUpdate(){
            Transaction tx =null;
            try {
                //获取事务对象  并且开启事务
                tx = session.beginTransaction();
                /*Transaction tx = session.getTransaction();
                tx.begin();*/
                User user = (User)session.get(User.class, 3);
                user.setName("王五");
                session.update(user);
                //提交事务
                tx.commit();
            } catch (Exception e) {
                e.printStackTrace();
                if(tx!=null)
                    tx.rollback();//回滚事务
            }
        }
    }

    注意:hibernate和jdbc 不一样, jdbc事务默认自动提交,hibernate的事务需要手动提交。

  • 相关阅读:
    CSS Friendly Control Adapters CSSFriendly.dll
    2008秋季计算机软件基础未交实验报告名单
    About NeatHtml™ Brettle.Web.NeatHtml.dll
    What is DotNetOpenMail DotNetOpenMail.dll
    What is the simplest way to distribute a .NET COM server to any platform?
    页面压缩 Enabling Gzip and Deflate HTTP Compression in ASP.NET pages(转)
    [算法分析]计数排序
    [置顶] EJDesktop开源项目
    继承初体验
    [置顶] 基于stm32f103zet6之UC/OS_II的学习1(初步移植OS点灯大法)
  • 原文地址:https://www.cnblogs.com/forever2h/p/6734970.html
Copyright © 2011-2022 走看看