目录
一、什么是ORM
ORM - Object Relational Mapping 对象关系映射
映射内容:
- 数据库表 JAVA实体类 (数据的载体)
- 表的字段 JAVA类中的属性
- 数据库的数据类型 JVAA的数据类型
- 数据库表的记录 JAVA类的对象
- 表与表的主外键关系 JAVA的对象间的关联关系(一对一、一对多、多对一、多对多
二、主流的ORM框架
- Hibernate 完整的orm框架 主要映射应用程序的对象模型,更能体现ORM的思想。
- Mybatis 非完整的orm框架 主要映射的是sql语句 Mybatis-plus
- JPA 类似hibernate框架
三、Hibernate的基础概念
- 持久化 程序的对象在瞬时状态(内存)与持久状态(磁盘)之间转换的机制。
- 持久化操作 主要对数据库的增删改查的操作
- 持久层 指的是数据访问层(DAO层)
- Hibernate与JDBC的关系
JDBC是底层的数据库的交互技术,Hibernate封装了JDBC,提高了DAO的开发效率。
四、Hibernate的框架的学习流程
五、Hibernate的入门程序
(1)手动配置
- 添加hibernate的类库(jar包)
- 配置hibernate.cfg.xml的全局文件
-
<session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/hiberdb?useUnicode=true&characterEncoding=UTF-8 </property> <property name="connection.username">root</property> <property name="connection.driver_class"> com.mysql.cj.jdbc.Driver </property> <property name="myeclipse.connection.profile">myemp</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 注册映射文件 --> <mapping resource="com/web/hiber4/entity/Users.hbm.xml" /> </session-factory>
说明:
- dialect 必选 指定数据库的方言(类型)
- show_sql 指定为true时,会在控制台输出执行的sql语句
- format_sql 格式化输出sql
- 创建实体类
- 编写ORM映射文件
-
<hibernate-mapping> <class name="com.gec.hiber4.entity.Users" table="USERS" > <id name="id" type="java.lang.Integer"> <column name="ID" precision="4" scale="0" /> <!-- 快㨗键 alt+/ --> <generator class="identity"> </generator> </id> <property name="name" type="java.lang.String"> <column name="NAME" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="PASSWORD" not-null="true" /> </property> <property name="telephone" type="java.lang.String"> <column name="TELEPHONE" /> </property> <property name="username" type="java.lang.String"> <column name="USERNAME" /> </property> <property name="isadmin" type="java.lang.String"> <column name="ISADMIN" /> </property> </class> </hibernate-mapping>
主键生成策略(器);
- identity 主键自增(建议) mysql或sqlserver 由底层数据库实现主键自增
- increment 主键自增 由hibernate程序实现主键自增,原则 :select max(id)+1
- assigned 一般用于主键是字符串,由程序提供主键的生成算法
- sequence 序列生成主键,oracle常用
- uuid 全球唯一标识码,32位长度的字符串,jdk提供相应在工具生成uuid,在分布式系统中较常用。
六、Hibernate的get和load方法【了解】
都是根据对象的唯一标识查询单条记录
区别:
- get方法是即时加载数据,load方法是延时加载数据,在获取对象属性时发送sql语句。
- 如果找不到数据时,load方法会抛出ObjectNotFoundException,get方法返回null值。
七、Hibernate的对象的状态转换(了解)
说明:
- 临时状态 当使用new实例化出来的对象,该对象还没在hibernater的容器中管理。
- 持久状态 该对象是由hibernate容器管理的,对象与数据库的数据是一一对应关系。也称为“托管状态”。
- 游离状态 持久状态的对象脱离容器的管理,也称为“脱管状态”