一、Hibernate基础知识
1.【ORM---对象/关系映射】
ORM(Object/Relationship Mapping)
利用面向对象思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,但编写很多和底层数据库相关的sql语句与面向对象思想格格不入。

2.【主流的ORM框架技术】
- Hibernate
- MyBatis:前身就是著名的iBatis
- Toplink:后被Oracle收购,重新包装为Oracle AS TopLink
- EJB:本身是javaee的规范
3、Hibernate
对JDBC进行了非常轻量级的对象封装。

创建Hibernate实例步骤:

1.创建工程,导入相关jar包。
Preferences---Java---Build Path---User Libraries---添加自定义类库

右键工程---Preferences---Java---Build Path---Libraries---Add Library---User Library---选择刚创建的自定义类库。
可设置以下路径的dtd文档支持xml的自动提示功能。

创建Hibernate的配置文件hibernate.cfg.xml。以下五个标签是hibernate.cfg.xml文件基本的属性标签,包括数据库的用户名、密码、驱动、地址、数据库方言。

2.创建持久化类【即Java Bean】

3.创建对象-关系映射文件
右键src---new---other---Hibernate---Hibernate XML Mapping file(hbm.xml),创建对象-关系映射文件hibernate.cfg.xml。

同时,在hibernate.cfg.xml文件中声明mapping标签。

4通过Hibernate API编写访问数据库的代码



二、Hibernate进阶
1.hibernate.cfg.xml常用配置

2.session
Session可以理解为操作数据库的对象。不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库。
session与connection是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。
把对象保存在关系数据库中需要调用session的各种方法,如:save(),update(),delete(),createQuery()等。
3.Transaction事务
- Hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。
- 如果想要实现hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式。如下:(通常并不推荐这样做)
4.session详解
获得session对象有两种方法:
- 1)openSession

- 2)getCurrentSession



openSession与getCurrentSession的区别:
(1)getCurrentSession在事物提交或者回滚之后会自动关闭,而openSession需要手动关闭。如果使用openSession而没有手动关闭,多次之后会导致连接池溢出。
(2)openSession每次创建新的session对象,getCurrentSession使用现有的session对象。


5.hbm配置文件常用设置




三、Hibernate单表操作
1、单一主键
以mysql为例,常见有两种主键生成策略:
- assigned:手工赋值方式。由java应用程序负责生成。
-
native:自动生成方式。由底层数据库自动生成标示符,如果是MySQL就是increment策略,如果是Oracle就是sequence策略,等等。
2.Hibernate基本类型
在hibernate.hbm.xml中,指定数据类型时,可以使用Hibernate映射类型,也可以使用java类型。
- date:年月日
- time:时分秒
-
timestamp:年月日时分秒
3.Hibernate对象类型
网友评论