一:Configuration类
1.读取hibernate.cfg.xml
2.管理对象关系映射文件<mapping resource="">
3.加载hibernate的驱动,URL,用户名,密码等等
4.管理配置信息
二:SessionFactory接口
1.缓存sql语句和某些数据(称为session级缓存)
2.是一个重量级的类(常驻内存,吃内存),一般用单例模式保证一个应用中只有一个,在应用程序中,如果用到多个数据库,一般一个数据库对应一个SessionFactory
3.通过SessionFactory接口可以获得Session(会话)实例
注:通过SessionFactory获取Session的两种方法openSession()和getCurrentSession()的区别
1.openSession()是获取一个新的session,创建commit或rollback是必须手动关闭
2.getCurrentSession()在同一线程中,获取的session是同一个session;这样可以利于事务的控制,并且会绑定到当前线程中,自动关闭,查询时必须用事务
3.如果希望使用getCurrentSession需要配置hibernate.cfg.xml
三:Session接口
1.Session一个实例代表与数据库的一次操作(可以是crud组合)
2.Session实例通过SessionFactory获取,用完需要关闭
3.Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSession()。
4.Session可以看做是持久化管理器,它是与持久化操作相关的接口
四:Transaction接口
1.Transaction是底层的事务实现中抽象出来的接口
2.可能是一个jdbc或者jta(全局事务)的事务,这样有利于hibernate在不同执行环境中移植
3.hibernate要求显示的调用事务(如果仅仅是查询可以不调用)