一:SessionFactory的用途:
1.负责创建Session对象,可以通过Configuration对象创建SessionFactory
2.SessionFactory对象中保存了当前的数据库配置信息和所有的映射关系以及预定义的Sql语句,同时SessionFactoy还负责维护Hibernate的二级缓存
3.SessionFactory对象的创建会有较大的开销,而且SessionFactory对象采取了线程安全的设计方式,因此在实际中SessionFactory对象可以尽量的共享,在大多数情况下,一个应用中针对一个数据库可以共享一个SessionFactory
创建SessionFactory的方式:
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
二:Session的用途:
1.定义了添加、更新、删除、和查询等操作,是持久化操作的基础,Session的设计是非线程安全的,因此,一个Session对象只可以由一个线程使用
Session对象可以由SessionFactory对象创建
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
Session session=factory.openSession();
三:Transaction的用途:
将应用代码从底层的事务实现中抽象出来—这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)-允许应用通过一组一直的ApI控制事务边界
使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)
开启方式:
Transaction tx=session.beginTransaction();