• Hibernate学习笔记


    1. 配置了<property name="current_session_context_class">thread</property> 后,才可使用sf.getCurrentSession();

    2.基本用法,getCurrentSession()不用Close()   

                 openSession() 需要 Close()

    teacher s = new teacher();
    s.setTitle("title");
    s.setName("wzh");
    
    Configuration cfg = new AnnotationConfiguration();
    SessionFactory sf = cfg.configure().buildSessionFactory();
    
    Session session = sf.openSession();
    session.beginTransaction();
    session.save(s);
    session.getTransaction().commit();
    session.close();
    
    Session session2=sf.getCurrentSession();
    session2.beginTransaction();
    session2.save(s);
    session2.getTransaction().commit();
    
    sf.close();

    3.核心操作

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.AnnotationConfiguration;
    import org.hibernate.cfg.Configuration;
    import org.junit.AfterClass;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    import com.wzh.hibernate.model.teacher;
    
    public class HibernateCoreAPITest {
    
        private static Configuration cfg;
        private static SessionFactory sf;
    
        @BeforeClass
        public static void BeforeClass() {
            cfg = new AnnotationConfiguration();
            sf = cfg.configure().buildSessionFactory();
        }
    
        @Test
        public void testSaveWith3State() {
            // 三种状态
            teacher s = new teacher();
            s.setTitle("title");
            s.setName("wzh");
            // 保存之前是 Transient 内存中一个对象,没ID,缓存也没有
            Session session = sf.getCurrentSession();
            session.beginTransaction();
            session.save(s);
            // 保存之后是 Persistent 内存中有,缓存中有,数据库有(ID)
            System.out.println(s.getId());
            session.getTransaction().commit();
            // 提交之后是 Detached 内存有,缓存没有,数据库有
            System.out.println(s.getId());
        }
    
        @Test
        public void testDelete() {
            teacher s = new teacher();
            s.setId(1);
            // s.setTitle("title");
            // s.setName("wzh");
            // Session session = sf.getCurrentSession();
            // session.beginTransaction();
            // session.save(s);
            // System.out.println(s.getId());
            // session.getTransaction().commit();
            // System.out.println(s.getId());
    
            Session session2 = sf.getCurrentSession();
            session2.beginTransaction();
            session2.delete(s);
            session2.getTransaction().commit();
        }
    
        @Test
        public void testLoad() {
            Session session = sf.getCurrentSession();
            session.beginTransaction();
            teacher t= (teacher) session.load(teacher.class, 2);
            //load是懒加载,在用对象时才发出sql语句取数据
            //生成的是动态代理对象,该对象是元对象的子类
            System.out.println(t.getClass());
            System.out.println(t.toString());
            session.getTransaction().commit();
            System.out.println(t.getName());
            System.out.println(t.toString());
        }
        
        @Test
        public void testGet() {
            Session session = sf.getCurrentSession();
            session.beginTransaction();
            teacher t = (teacher) session.get(teacher.class, 2);
            //get 是直接发sql语句取数据
            System.out.println(t.getClass());
            System.out.println(t.toString());
            session.getTransaction().commit();
            System.out.println(t.toString());
        }
    
        @AfterClass
        public static void AfterClass() {
            sf.close();
        }
    
        public static void main(String[] args) {
            BeforeClass();
        }
    }
    View Code
  • 相关阅读:
    7月23日 R进行层次聚类算法的继续完善
    明天学习的内容
    MySql快速导出为excel文件
    数据挖掘的隐私边界 【转自《中欧商业评论》】
    【转】Data truncation: Truncated incorrect DOUBLE value:Mysql Update时
    7月20日下一步工作
    R对term进行kmeans聚类完整实例(tm包)
    数学之美 系列一 统计语言模型
    7月30日总结
    MathType输入Support 自动分开的问题
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3482950.html
Copyright © 2020-2023  润新知