Hibernate 基础知识点总结
什么是O/R mapping的概念,为什么要使用O/R mapping?
O/R mapping 是面向对象/关系的映射 解决数据库操作中关系和对象不匹配的问题
前面在用JSP, Servlet, JavaBean开发应用的时候,没有用到O/R映射框架,在需要对数据库的操作时,是怎么实现的,有什么问题
直接使用JDBC API 和 SQL语句访问数据库
出现适配问题 同时破坏了面向对象的纯度
在O/R mapping中,类和对象分别和关系数据库中的什么对应
表 元组
对应到O/R mapping框架中,什么是是域对象和持久化
域对象是对现实世界实体的软件抽象,可代表领域中的实体
持久化狭义上是指将域对象保存到数据中,广义上指数据库相关的操作,例如增删查改等
以前基于MVC开发的时候,只有V C M 三层,在开发复杂的应用时候,需要进一步引入持久化层,引入持久化层有什么作用?
将数据访问细节与业务逻辑分离,可以将数据访问作为单独的持久化层,达到数据访问与业务逻辑的松耦合。
Hibernate框架中主要有哪些模块,分别有什么作用?
- SessionFactory接口:生成session对象的工厂,本身要用到ConnectionProvider ,该对象可以在进程和集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。
- Session: 是位于应用程序和持久存储层之间交互操作的一个单线程对象;所有的持久化层对象必须在Session的管理下才能够进行持久化操作;生命周期短隐藏了JDBC连接,Session也是Transaction工厂。
- 持久化对象:系统创建的POJO实例一旦与特定Session关联,并对应数据表的指定记录那该对象就处于持久化状态;程序对持久化对象(内存)的修改都将自动转化为持久层(数据库层)的修改
- 瞬态对象和托管对象:Java程序中通过和new操作创建的对象,没有和Session相关联此时处于瞬态;如果一个曾经持久化过的实例,但因为session状态关闭而转化为托管对象
- 事务(transaction):代表一次原子操作,具有数据库事务的概念;通过抽象,将应用程序从底层的具体的JDBC、JTA和CORBA事务中隔离开;所有的持久化操作都应该在事务管理下进行
- 连接提供者(ConnectionProvider):生成JDBC的工厂,同时具备连接池的作用;通过抽象将底层的DataSource和DriverManager隔离开;减少程序连接频繁连接和关闭数据库
- 事务工厂(TransactionFactory):生成Transaction实例的工厂,该对象也无需应用程序的直接访问,配置好即可
Hibernate框架要用到哪些主要的接口,如何使用?
- Configuration:对Hibernate进行配置,并启动Hibernate
- SessionFactory:初始化Hibernate,其实例充当数据存储源的代理
- Session:又称持久化管理器,通过面向对象的方法提供对数据库的基本操作:保存、更新、删除和查询方法
- Transaction:对底层的事务接口做了封装和抽象
- Query和Criteria:向数据库查询对象,并控制执行查询的过程