1.hibernate是什么
* 面向java环境的对象/关系数据库映射工具
* ORM(Object/Relational Mapping)映射工具,建立面向对象的域模型和关系数据模型之间的映射
* 连接java应用和数据库的中间件
* 对JDBC进行封装,负责java对象的持久化
* 在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑
* 中小型项目使用hibernate 大型用jdbc 性能问题
* 表述层-------业务逻辑层--------持久化层--------数据库层
* Hibernate中间件:Hibernate不和特定的业务领域相关,能够把任意一个Java应用与数据库系统连接,可以理解为是一种中间件
2.软件模型
* 实体域对象:通常是指业务领域中的名词。(pojo)(plain old java object)。--映射数据库中的表
* 过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。(对pojo操作的方法)
3.域对象之间的关系
* 关联:类间的引用关系。以属性定义的方式表现
关联可分为一对一、一对多和多对多。还可分为单项关联和双向关联
* 依赖:类之间访问关系。无需定义成属性。在A中访问B中的方法或属性,或者A负责实例化B。
* 聚集(Aggregation):整体与部分的关系。例人与手的关系。部分类的对象不能单独存在,他的生命周期依赖于整体类的对象的生命周期,整体消失时,部分也随之消失
4.域对象的持久化概念
* 实体域对象在内存中创建后,不能永久存在。将实体域对象永久保存起来,就是持久化的过程
5.ORM
* ORM的实现思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。因此ORM的目的是为了方便开 发人员以面向对象的思想来实现对数据库的操作
* ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中
* 元数据 描述数据的数据
public void deleteCustomer(Customer c){
Session session = getSession();
session.save(c);
}
* 执行步骤如下:
1.运用反射机制,获得Customer对象的Customer.class类。
2.参照映射文件得到Customer类对应的表的信息,以及和Customer类关联的类以及
相应的表信息。
3.根据以上信息生成SQL语句。
4.调用hibernate API,执行该语句