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

Hibernate简单的保存操作相关推荐

  1. 使用hibernate框架完成CRUD操作

    前言 : Hibernate框架是一个持久层技术的一个解决方案,使用很简单的配置就可以完成许多之前需要很多JDBC代码才能完成的增删改查操作 , 在这种持久层框架中 , ORM思想非常重要 在ecli ...

  2. NHibernateLinq简单的CRUD操作

    因为最近在做一些有关数据库方面的开发,其实,说白了,就是对数据库的CRUD操作,写了n多的存储过程,倒不是说存储过程多难,关键是在后期的维护方面有点头疼,没办法,研究一下ORM吧. 下面分别是用NHi ...

  3. python怎么保存文件代码_Python文件读写保存操作的实现代码

    本篇文章给大家带来的内容是关于Python文件读写保存操作的实现代码 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录下第一次使用Python读写文件的过程,虽然很简单,第一次实 ...

  4. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...

    http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...

  5. Hibernate的Cascade——级联操作

    在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...

  6. hibernate简单入门教程(四)---------关联映射

    这部分内容不建议使用.因为作为一个程序员.表跟表之间的关系不应该简化处理,这样开发中反而会引起更大的麻烦.数据表是一个项目的关系核心所在. 但是我还是把这部分给弄出来. 一.常见的映射关系 一对多:部 ...

  7. Hibernate简单配置

    这是我百度云盘hibernate的jar包链接地址:https://pan.baidu.com/s/190PHSRzsQa9DEMD7WP3l0A 密码:92m8 接下来就是我们如何使用了 首先创建一 ...

  8. pythoncharm怎么保存_pycharm软件实现设置自动保存操作

    pycharm一般安装完毕,就是默认是自动保存的,但是......但是....既然是程序,既然是软件,就难免出现bug.也许会有码友出现头天晚上写好的代码,打开一看,第二天白花花一片!!!泪奔有没有 ...

  9. opencv学习—简单车牌识别操作(python)

    opencv学习-简单车牌识别操作(python) 目录 opencv学习-简单车牌识别操作(python) 利用opencv进行车牌识别的详细流程如下: 1.车牌检测 2.分割车牌号并进行识别 3. ...

最新文章

  1. VS2017断点调试UNITY2018.3 经常卡住的问题
  2. STL——关联式容器
  3. [css] 在页面中的应该使用奇数还是偶数的字体?为什么呢?
  4. 沃顿商学院最受欢迎的思维课
  5. HTTP协议及URL统一资源定位符详解
  6. 11-13SQLserver基础--数据库之事务
  7. 写好数据分析报告,数据的思路非常重要
  8. 推送流程(极光推送)
  9. SHU OJ 420 购买装备(假装背包,其实贪心)
  10. 带宽与码元的关系_带宽和传输速率的关系是什么?
  11. java中if条件函数怎么用_if函数,多个条件怎么使用
  12. 【BUG】.NET项目|未能加载文件或程序集“xxx”,或它的某一个依赖项。系统找不到指定的文件的通解
  13. 双重福利:计算机图书满100减50+满99 减10叠加券,更有抽奖送书活动,点击查看!...
  14. 获取UNIX主机当前时间的函数
  15. 在无处落脚的大海,你就是我的岛屿
  16. matlab计算叶子的面积,基于MATLAB进行树叶面积测量实验报告
  17. Dell OptiPlex 7040拆机组装全记录
  18. FPGA实现SD卡音乐播放
  19. 计算机在中学物理的应用分析报告,信息技术在初中物理教学中的应用
  20. 如何用大数据找女朋友?

热门文章

  1. opencv基于DNN的人脸检测
  2. 学生每日计划表_学霸宅家都干什么?浙大学生近700份居家作息计划表泄露秘密...
  3. 基于pyQt的按键响应程序,实现按下按键进行图片曝光(按下按钮,运行另一个曝光图片程序.py)
  4. 使用rust编译linux,在 Ubuntu 上为 CentOS 编译 Rust 程序,
  5. 数据结构-在O(1)时间删除链表节点
  6. Day7—socket进阶
  7. django之分页、cookie装饰器
  8. 封装的三级联动及应用
  9. LeetCode | 3 Sum
  10. 整理90部好看的经典喜剧片