Hibernate常用API
小编:管理员 541阅读 2022.09.14
Hibernate常用API
-
Configuration :负责加载核心配置文件
- 加载的默认名字为hibernate.cfg.xml,如果不是这个名字,那么需要指定
- SessionFactory configuration.buildSessionFactory()创建SessionFactory
-
SessionFactory : 用来创建Session(会话)
- Session openSession()获取Session
-
Session : 数据库连接会话,用来实现增删改查
- save(Object)增加数据
-
get(Class
cls,arg)根据id查询 - update(Object object)更新,一般先要根据条件获取到其中的记录,然后在其对象中修改
- delete(Object object)删除
-
Transaction :负责事务控制
- session.beginTransaction()开始事务
- rollback()回滚
- commit()提交事务
- Query :执行特殊的查询
public class HibernateUntil { private static Configuration configuration; private static SessionFactory sessionFactory; /* * 静态语句块中的内容只是在类加载的时候只创建一次,因此这里的大大减少了资源的消耗 */ static { // 加载核心配置文件hibernate.cfg.xml configuration = new Configuration(); configuration.configure(); // 创建SessionFactotry对象 sessionFactory = configuration.buildSessionFactory(); } //创建session对象,在测试类中可以使用这个静态方法获取session public static Session getSession() { return sessionFactory.openSession(); } }复制增删改查
package cn.tedu.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.tedu.bean.Student; import cn.tedu.utils.HibernateUntil; public class Demo1 { /** * 添加数据到数据库中 * save(Object object) * 直接传入的是一个实体类的对象,我们在实体类中设置值,那么设置的值就会根据映射关系文件将其添加到指定的表的字段的值 */ @Test public void TestAdd() { Session session = null; Transaction transaction = null; try { // 创建session session = HibernateUntil.getSession(); // 开始事务 transaction = session.beginTransaction(); Student student = new Student(); student.setAge(22); student.setName("陈加兵"); // 保存数据到数据库 session.save(student); // 提交事务 transaction.commit(); } catch (Exception exception) { transaction.rollback(); // 事务回滚 } finally { if (session!=null) { session.close(); } } } /** * 删除数据 * 1. 根据id查询出想要删除的对象 * 2. 使用delete(Object obj) 删除 */ @Test public void testDelete(){ Session session = null; Transaction transaction = null; try { // 创建session session = HibernateUntil.getSession(); // 开始事务 transaction = session.beginTransaction(); Student student=session.get(Student.class, 1); //根据id查询想要删除的对象 session.delete(student); //删除查询到的对象 // 提交事务 transaction.commit(); } catch (Exception exception) { transaction.rollback(); // 事务回滚 } finally { if (session!=null) { session.close(); } } } /** * 根据id查询数据,返回的是一个实体类对象 * get(Class复制cls,id) */ @Test public void testGet(){ Session session = null; Transaction transaction = null; try { // 创建session session = HibernateUntil.getSession(); // 开始事务 transaction = session.beginTransaction(); //查询id=1的数据,并且返回对象 Student student=session.get(Student.class, 1); System.out.println(student); // 提交事务 transaction.commit(); } catch (Exception exception) { transaction.rollback(); // 事务回滚 } finally { if (session!=null) { session.close(); } } } /** * 测试更新数据 * 1. 先根据id获取指定的对象 get(Class class,id) * 2. 使用set方法修改对象中的属性值 * 3. update(Object object) 直接将对象更新即可 */ @Test public void TestUpdate() { Session session = null; Transaction transaction = null; try { // 创建session session = HibernateUntil.getSession(); // 开始事务 transaction = session.beginTransaction(); //查询id=1的数据,并且返回对象 Student student=session.get(Student.class, 1); student.setName("Jack"); student.setAge(33); session.update(student); // 提交事务 transaction.commit(); } catch (Exception exception) { transaction.rollback(); // 事务回滚 } finally { if (session!=null) { session.close(); } } } }
相关推荐
- 经典笔试题-JDBC及Hibernate篇 五、JDBC 及Hibernate:(共12 题:基础10 道,中等难度2 道)110、数据库,比如100 用户同时来访,要采取什么技术解决?【基础】 答:可采用连接池。111、什么是ORM?【基础】 答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象…
- 3DMAX提示和技巧 本主题标识使用 Civil View 的一些重要提示和技巧。常规使用屏幕分辨率至少为 1280x1024 的 Civil View。低于此分辨率时,一些面板将占用过多屏幕空间。 将视口设置为线框显示以达到最佳性能。 要尽可能简化用户界面,请在单个视口中工作并关闭 3ds Max 命令面…