A:总结知识点:
1,先创建Hibernate配置文件。
2,Configuration是用来读取xml配置文件的。
3,sessionFactory是session工厂,是线程安全的,创建时非常消耗资源,所以一个项目里面,只应该有一个SessionFactory,即采用单例模式。4,Hibernate4创建SessionFactory时要麻烦一些,因为新增了一个SeviceRegistry接口。所有基于Hibernate的配置或者服务必须统一向这个ServiceRegistry注册后才能生效。
5,Hibernate不仅仅是web程序的应用,普通的java程序也可以使用Hibernate。
B:创建SessionFactory步骤如下:
// 1,创建一个SessionFactory对象
SessionFactory factory = null;
Configuration cfg = new Configuration().configure();
// factory = cfg.buildSessionFactory();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(cfg.getProperties()).buildServiceRegistry();
factory = cfg.buildSessionFactory(serviceRegistry);
C:关于Session。
Session是应用程序和数据库之间交互操作的一个单线程对象。它是Hibernate运作的中心,所有持久化对象必须在Session的管理下才可以进行持久化操作。Session对象的生命周期很短,里面有个一级缓存。实际上他是对JDBC的Connection的封装。
D:事务Transaction
所有持久层都应该在事务管理下进行,特别是修改操作,只读操作的话,最好我们也要写上事务。
// 3,开启事务
Transaction transaction = session.beginTransaction();
例如:保存操作,如果在没有开启事务的时候对其进行操作,Hibernate会执行保存数据的语句,但是数据没提交到数据库,这时数据库时没有保存到数据的。
E:Hibernate配置文件的两项配置。
hbm2ddl.auto:该属性可帮助程序员实现正向工程,即由java代码生成数据库脚本,进而生成具体的表结构。取值有create、update、create-drop、validate
1,create:会根据.hbm.xml文件来生成数据表,但每次运行都会删除上一次的表,重新生成表,哪怕二次没有任何改变。
2,create-drop:会根据.hbm.xml文件生成表,但是SessionFactory一关闭,表就自动删除。
3,update:这个是最常用的属性值,也会根据.hbm.xml文件生成表,但若.hbm.xml文件和数据库中对应的数据表结构不同,Hibernate将更新数据表结构,但不会删除已有的行和列。
4,validate:会和数据库中的表进行比较,若.hbm.xml文件中的列在数据表中不存在,这抛出异常。
format_sql:是否将sql转化为格式良好的sql,取值为true、false。