什么是hibernate?
- hibernate是持久层的一个ORM框架
什么是ORM?
- ORM: Object Relational Mapping(对象关系映射).指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表
为什么要学习Hibernate?
- 与其他操作数据库的技术相比,Hibernate 具有以下几点优势:
- Hibernate对JDBC访问数据库的代码做了轻量级封装,大大简化了DAO层繁杂的重复性代码,并且减少了内存消耗,加快了运行效率
- Hibernate是一个JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度简化了DAO(Date Access Object,数据访问对象)层的编码工作
- Hibernate的性能好,映射的凌华星很出色.它支持很多关系型数据库,从一对一到多对多的各种复杂关系.
- 可拓展性强,由于源代码的开源以及API的开放,当本身功能不够用时,可以自行编码进行扩展
创建表,实体类
- 实体类中的属性要和表中的字段的名字可以不同,但是二者要相对应
- 实体类要提供get和set方法
- 要想数据库中的表和实体类建立关系,需要通过xml文件来配置映射
创建映射
- 映射需要通过XML的配置文件来完成,这个配置文件可以任意命名.不过尽量统一命名规范(类名.hbm.xml)
- xml文件的头部如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- 结构
- hibernate-mapping
- class name:类的全路径(如:com.jxust.hibernate.Customer,customer是类名),table:表名
- id name:类中属性名,column:表中字段名
- generator(主键生成策略)
- property name:类中属性名,column:表中字段名
- id name:类中属性名,column:表中字段名
- class name:类的全路径(如:com.jxust.hibernate.Customer,customer是类名),table:表名
- hibernate-mapping
创建核心配置文件(*****)
-
Hibernate的核心配置文件的名称: hibernate.cfg.xml
-
xml文件的头部如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
结构
- hibernate-configuration
- session-factory
- property name
- mapping resource:映射文件的全路径(如:com/jxust/hibernate/Customer.hbm.xml)
- session-factory
- hibernate-configuration
映射的配置
- class标签的配置
- 标签用来建立类与表的映射关系
- 特性:
- name:类的全路径
- table:表名(类名与表名一致时,table可以省略)
- catalog:数据库名
- id标签的配置
- 标签用来建立类中的属性与表中的主键的对应关系
- 特性:
- name:类中的属性名
- column:表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)
- length:长度
- type:类型
- property标签的配置
- 标签用来建立类中的普通属性与表中的字段的对应关系
- 特性:
- name:类中的属性名
- column:表中的字段名
- length:长度
- type:类型
- not-null:设置非空