Hibernate接口
Criteria、 Query、 Transaction 查询依赖
Session
SessionFactory
Configuration
hibernate.cfg.xml hibernate数据库配置 *.hbm.xml 持久化映射
Configuration类
Configuration类负责管理Hibernate的配置信息
Hibernate运行的底层信息:数据库的Url,用户名,密码,jdbc驱动类,数据库Dialect,数据库连接池等
Hibernate配置文件默认为Hibernate.cfg.xml
Hibernate映射文(*.hbm.xml)
Configuration config =new Configuration(); 生成对象
config.configure(); 加载Hibernate配置和映射文件
SessionFactory sessionFactory = config.buildSessionFactory(); 生成SessionFactory对象
SessionFactory 接口
会话工厂缓存了生成的sql语句和一些数据
对话在应用初始化时被创建
使用Hibernate访问多个数据库,需要对每个数据库使用一个SessionFactory
应用程序从工厂获得Session实例
Configuration config = new Configuration();
config.configure();
SessionFactory sessionFactory =config.buildSessionFactory();
Session 接口
Session 称为持久坏管理器,因为它是与持久化有关的操作连接接口
Session代表与数据库之间的一次操作
Session通过SessionFactory打开,在所有的工作完成后需要关闭
Seesion的使用在只能在一个线程中使用
Configuration config =new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();(或者openSession)
Session包扩就是对数据库的增删改查
-save()保存
-get()/load();读取 区别get如果没有找到记录返回null load没有找到,抛出违例
-update()更新
-delete()删除
Transaction 接口
Transaction从底层的事物实现中抽象出来的接口
或许是JDBC事务或者jta的事务这有助保持Hibernate应用在不同类型的执行环境或容器中的可移植性
使用Hibernate进行操作时必须显示的调用Transaction
Seession session=sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
...
tx.commit();
session.close();
Query接口
使用Query类型的对象可以方便我们对数据进行查询,它使用qbc,qbe,hql或者原生sql对数据执行查询操作
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("from table");
List list = query.list();
tx.commit();
Criteria接口
Criteria接口和Query接口类似,它允许我们创建并且执行面向对象方式的查询
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx =session.beginTransaction();
Criteria crit =session.createCriteria(Test.class);
Criterion criterion1 = Restrictions.like("name","张%");
crit.add(criterion1);
List list = crit.list();
tx.commit();