Hibernate简单的保存操作

Hibernate操作数据库详解
本文详细介绍了如何使用Hibernate框架创建session对象,并通过实例演示了数据对象的保存与查询操作。此外,还讨论了事务管理的重要性及常见错误处理。

  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语句进行迭代遍历。

转载于:https://www.cnblogs.com/leezoey/p/5929587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值