hibernate 的核心配置
-
必须的配置
连接数据库的基本参数:
驱动类 URL路径 用户名 密码
方言:配置不同的数据库可以生成不同的sql.
-
可选的配置
显示sql语句 hibernate.show_sql
格式化sql语句 hibernate.format_sql
自动建表 hibernate.hbm2ddl.auto hbm2ddl ---hb :hibernate / m : mapping / 2 :to 转换 / ddl : 数据库建表的语句
none : 不适用hibernate自动建表
create :
create-drop :
update :
validate :
-
映射文件的引入
hibernate 的核心API
Configuration : hibernate的配置对象
Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。
SessionFactory : Session 工厂
SessionFactory 内部维护了Hibernate的连接池和hibernate的二级缓存(不讲)。是线程安全的对象。一个项目创建一个对象即可。
配置连接池(了解)
抽取工具类:
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。——百度百科
API : 简单的说就是别人写好的工具类,极大的提高了程序员的开发效率,避免重复造轮子。
Hibernate的API一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。
Session (最重要的一个)类似connection对象是连接对象。
session代码的是hibernate与数据的链接对象,不是线程安全的。所以,这个对象不能设置成全局的。
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
get方法和load方法的区别?
get方法 (使用的相对来说多一些)
采用的是即时加载,执行到这行代码的时候,就会马上发送sql语句去查询。
查询后返回的是真实对象本身。
查询一个找不到的对象的时候会返回null
load方法
采用的是延迟加载,懒加载。执行到这行代码的时候,不会发送sql语句,当真正使用这个对象除了id以外的属性时才会发送sql查询。
查询后返回的是一个代理对象。(没有使用jdk的动态代理,使用的是一个第三方的代理javassist技术来产生的代理。)
查询一个找不到的对象的时候会报异常ObjectNotFoundException()
修改的操作:
删除的方法:
void delete(Object obj);
saveOrUpdate(Object obj) 保存或者更新的方法。
查询所有:
Transaction
Transaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。