Hibernate-简单完成crud
来源:互联网 发布:说话技巧 叶名琛 知乎 编辑:程序博客网 时间:2024/05/18 02:05
这个算是接着上一篇写的了,昨天打游戏去了,打hi了,就没做,这次再完善一下上篇没做玩的crud测试。首先,因为crud的每个方法都需要开启session会话,不如直接创建一个工具类,需要session时直接调用工具类岂不是更方便。
一.创建HibernateUtils工具类
位置:com.ht.Utils.HibernateUtil
public class HibernateUtil { public static SessionFactory sessionFactory; //加载主配置文件,创建session工厂 public static SessionFactory getSessionFactory(){ if (sessionFactory == null || sessionFactory.isClosed()) { sessionFactory = new Configuration().configure().buildSessionFactory(); } return sessionFactory; } //获取session public static Session getSession() { return getSessionFactory().getCurrentSession(); }}
二.hibernateTest实现crud
com.ht.test.HibernateTest
i.插入数据:hibernate实现插入数据的操作基本用的就是save()方法,当然这里还有个persist()方法。不作介绍。
@Test public void testSave() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = new Student("张三",20); session.save(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
ii.删除数据
@Test public void testDelete() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = new Student("张三",20); student.setId(1); //删除的条件是对象具有id session.delete(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
iii:更新数据
@Test public void testUpdate() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = new Student("李四",22); student.setId(2); session.update(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
IV:查询数据:查询数据可以有两个方法,get()和load(),今后工作面试题也可能会遇到这样的问题,问你hibernate查询的两个方法的差别.首先,将代码写出来,再看差别.
@Test public void testGet() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = session.get(Student.class, 2); System.out.println(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
@Test public void testLoad() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = session.load(Student.class, 2); System.out.println(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
这里有两个版本的说明,都粘贴出来吧./* * get()与load()的共同点:都是根据id查询对象 * get()与load()的区别: * get():若加载的对象不存在,则返回null * get方法立即检索 * load():若加载的对象不存在,则抛出异常,LazyInitializationException(懒加载异常) 异常 * load方法延迟检索 */
/** * get() VS load(): * 1).执行get方法理解调用对象 * 执行load方法,若不使用该对象,则不会立即执行查询操作,而返回一个代理对象。 * * get方法是立即检索,load方法是延迟检索 *2). 若数据表中没有对应的记录,并且Session没有被关闭,同时需要使用对象时 * get方法返回null * load方法若不使用没问题,若需要初始化了,则抛出异常 * 3).load方法可能会抛出 LazyInitializationException(懒加载异常) 异常 * 代理对象已经关闭了session */
v:还有个特殊的方法,saveorupdate();
@Test public void testSaveOrUpdate() { Session session = HibernateUtil.getSession(); try { //1.开启事务 session.beginTransaction(); //2.执行操作 Student student = new Student("王五",22); //student.setId(2); //执行save()或是update()在于数据表中的id是否存在, //如果有,则执行update(), //如果没有,则执行save(). session.saveOrUpdate(student); //3.提交事务 session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //4.事务回滚 session.getTransaction().rollback(); } }
0 0
- Hibernate-简单完成crud
- Hibernate完成CRUD
- Hibernate-CRUD简单实例
- hibernate简单的crud
- 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完成简单的CRUD操作
- Hibernate实现简单的CRUD
- Hibernate-简单的crud案例
- Hibernate 入门------简单的CRUD
- hibernate-MySQL配置文件及简单应用(CRUD)
- 基于JPA的Hibernate->CRUD(简单应用)
- hibernate-MySQL配置文件及简单应用(CRUD)
- Hibernate入门(三)简单CRUD
- Hibernate入门BLOG [四、Hibernate的CRUD简单总结]
- Hibernate简单crud和Hibernate主键生成策略
- hibernate---CRUD
- hibernate-CRUD
- 【Hibernate】crud
- JDBC完成CRUD
- 腾讯云又搞特价活动打折续费还可以有优惠机不可失
- 从尾到头打印链表
- python-socket-udp编程
- Unity基础.002Transform场景物体的变换
- svn
- Hibernate-简单完成crud
- 【java】嵌套矩形
- jQuery最后案例
- hdu2065 “红色病毒” 指数型母函数
- Java回炉重造(一)Socket的客户端和服务端通信
- JS字符串对象
- ExpandableListView中item的定位问题
- 数据结构—链表-链式存储
- 初学web前端-20170424