HibernateSomePoints

Hibernate 基础知识点总结

  1. 什么是O/R mapping的概念,为什么要使用O/R mapping?

    O/R mapping 是面向对象/关系的映射 解决数据库操作中关系和对象不匹配的问题

  2. 前面在用JSP, Servlet, JavaBean开发应用的时候,没有用到O/R映射框架,在需要对数据库的操作时,是怎么实现的,有什么问题

    直接使用JDBC API 和 SQL语句访问数据库

    出现适配问题 同时破坏了面向对象的纯度

  3. 在O/R mapping中,类和对象分别和关系数据库中的什么对应

    表 元组

  4. 对应到O/R mapping框架中,什么是是域对象和持久化

    域对象是对现实世界实体的软件抽象,可代表领域中的实体

    持久化狭义上是指将域对象保存到数据中,广义上指数据库相关的操作,例如增删查改等

  5. 以前基于MVC开发的时候,只有V C M 三层,在开发复杂的应用时候,需要进一步引入持久化层,引入持久化层有什么作用?

    将数据访问细节与业务逻辑分离,可以将数据访问作为单独的持久化层,达到数据访问与业务逻辑的松耦合。

  6. 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实例的工厂,该对象也无需应用程序的直接访问,配置好即可
  7. Hibernate框架要用到哪些主要的接口,如何使用?

    • Configuration:对Hibernate进行配置,并启动Hibernate
    • SessionFactory:初始化Hibernate,其实例充当数据存储源的代理
    • Session:又称持久化管理器,通过面向对象的方法提供对数据库的基本操作:保存、更新、删除和查询方法
    • Transaction:对底层的事务接口做了封装和抽象
    • Query和Criteria:向数据库查询对象,并控制执行查询的过程

SqlSentences

创建数据库

1
create database database_name

使用某个数据库

1
use database_name

创建表

1
2
3
4
5
6
create table table_name(
line1_name datastructure,
line2_name datastructure,
...,
primary key(main attribute1,main attribute2,...)
)

表查值

1
select attribute1,attribute2,... from table_name;

表插值

1
insert into table_name (column1,column2) values (value1,value2);

删除表数据drop,truncate,delete的用法

drop:删除内容和定义,释放空间(即整个表都删掉)

1
drop table table_name

truncate:删除内容,释放空间但保留表的结构

1
truncate table table_name

delete:删除指定行

1
delete from table_name where attribute = value

更多信息请查询: