zoukankan      html  css  js  c++  java
  • Hibernate简单的保存操作

      1.这里面我想先说一下session对象的创建,这个是我们操纵数据库的核心对象,因此首先我们应该获取相应的session对象。

    public static Configuration cfg;
        public static SessionFactory factory;
        public static Session session = null;
        static {
            //用来读取hibernate.cfg.xml的配置文件
            cfg = new Configuration().configure();
            //获取工厂
            factory = cfg.buildSessionFactory();
            //创建对应的session对象
            session = factory.openSession();
        }

    强调一下,这里之所以都用static可以确保我们只生成一个session,而不会出现重复调用的情况。

    2.接着就进行了保存操作,试下了数据对象的保存

    public static void insertStudentSelection(String studentID,String teacherID){
            session.beginTransaction();// 开启事务
            Studentselection st=new Studentselection(studentID,teacherID);
            session.save(st);
            session.getTransaction().commit();  //提交事务之后才能保证数据保存成功
            session.close();
        }

    这里的开启事务是必须的,应为如果我们没有开启事务和保存事务的话,我们对应的数据库保存操作就会失败,同时建立的session也应当在使用完成之后关闭,否则长期使用下去的话会造成连接池溢出等一系列问题,hibernate没有想jdbc一样有自动提交事务的功能,因此我们必须要进行手动的开启和提交。

    3.在进行对象提交的时候我出现了一个问题,就是Duplicate entry 'abc' for key 'PRIMARY'错误,这个原因在与我插入的数据的主键与数据库存在的数据重复,因此数据库拒绝插入,下次遇到了就要注意。

    4.同是我还对数据库进行查询操作

    public static boolean select(Student stu) {
            session.beginTransaction();// 开启事务
            Criteria cre = session.createCriteria(Student.class);
            cre.add(Expression.eq("studentId", stu.getStudentId()));
            cre.add(Expression.eq("password", stu.getPassword()));
            List<Student> student = cre.list();
            if (session.isOpen()) {//关闭事务
                session.close();
            }
            // List<Student> student = session.createCriteria(Student.class).add(
            // Example.create(stu)).list();
            for (Student stu1 : student) {
                System.out.println(stu1);
            }
            //当发现集合为空的时候则证明为查询到相应的数据
            if (student.isEmpty()) {
                return false;
            } else {
                return true;
            }
    
        }

    通过list集合我可以获取返回相应的对象集合,通过foreach语句进行迭代遍历。

  • 相关阅读:
    Android杂谈错误整理(持续更新)
    javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法
    收藏微软面试智力题 (附答案)
    gridview等控件换行实现办法
    [原创]DataView特殊字条串替换(过滤)
    [转]ASP.Net4.0中新增23项功能
    从LOGO看百度与谷歌
    [转]Winxp下kernel32.dll内部的函数集合和地址值
    [转]ASP.NET Web Forms 4.0 简介
    asp.net类似于QQ表情弹出框功能的实现方法
  • 原文地址:https://www.cnblogs.com/leezoey/p/5929587.html
Copyright © 2011-2022 走看看