hibernate是完全面向对象操作数据库的框架,在操作数据库的时候,可以以面向对象的方式来完成,不需要书写SQL语句。
使用hibernate框架,首先需要导入hibernate框架使用的依赖包,导包过程主要包括hibernate包和操作数据库的驱动包
hibernate包有:数据库驱动包有:
hibernate是用来读写数据库的框架,因此需要搭建对应的数据库,创建相应的数据库表。hibernate提供创建数据库表的功能,因此创建表的步骤可以省略
hibernate是面向对象的框架,能够做到数据库无关性。因此需要建立对象与数据库表的映射配置文件。
映射配置文件的使用说明如下:
主配置文件必须命名为:hibernate.cfg.xml,注意大小写,主配置文件放在src目录下。
主配置文件的内容与解释如下:
com.mysql.jdbc.Driver jdbc:mysql:///hibernate root 123 org.hibernate.dialect.MySQLDialect true true update
至此hibernate框架搭建完毕。
创建Configuration对象,读取配置的hibernate框架的配置文件。
configuration功能:配置加载类,用于加载主配置,orm元数据加载
//1、创建,调用空参构造 Configuration configuration = new Configuration(); //2、读取指定配置文件 => 空参加载方法,默认加载src下的hibernate.cfg.xml文件 configuration.configure();
SessionFactory功能:用于创建操作数据库核心对象session对象的工厂
简单说就是创建一个session对象
注意:1、sessionFactory负责保存和使用所有配置信息,消耗内存资源非常大
2、sessionFactory属于线程安全的对象设计
结论:保证在web项目中,只创建一个sessionFactory.
//4、根据配置信息,创建sessionfactory SessionFactory sessionFactory = configuration.buildSessionFactory();
Session功能:表达hibernate框架与数据库之间的连接(会话) session类似JDBC年代的connection对象
还可以完成对数据库中数据的增删改查 session是hibernate操作数据库的核心对象
// 5、获得session // 打开一个新的session对象 Session session = sessionFactory.openSession(); // 获得一个与线程绑定的session对象 // sessionFactory.getCurrentSession();
开启事务对象有两种方式,用功能范围大的一种
// 6、session获得操作事务的transaction对象 // 获得操作事务的transaction对象 // Transaction transaction = session.getTransaction(); // 开启事务并获得操作事务的transaction对象(建议使用) Transaction transaction = session.beginTransaction();
事务开启以后,便可以进行增删改查操作,调用的是hibernate框架提供的方法。
增加:session.save()
删除:session.delete()
修改:session.update()
查询:session.get()
transaction2.commit();// 提交事务 session.close();// 释放资源 sessionFactory.close();// 释放资源
对于获取Configuration对象,SessionFactory对象和Session对象的代码都是一样的,因此可以将其抽离出来。
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sf; static { // 1 创建,调用空参构造 Configuration conf = new Configuration().configure(); // 2 根据配置信息,创建 SessionFactory对象 sf = conf.buildSessionFactory(); } // 获得session => 获得全新session public static Session openSession() { // 3 获得session Session session = sf.openSession(); return session; } // 获得session => 获得与线程绑定的session public static Session getCurrentSession() { // 3 获得session Session session = sf.getCurrentSession(); return session; } }
使用时直接调用获取相应的session对象即可,使用完毕关闭对象,释放资源。
Lebanon Address 版权所有
Powered by WordPress