ORM
Object Relation Mapping
对象 关系 映射
对象 指实体域对象
关系 关系数据
模型
概念模型(实体-属性)
关系数据模型(关系数据库)
域模型(对象)
软件分层
v - 表述层
c /
/业务层
m- 持久层(hibernate 技术实现)
\数据层
mvc 对应 各层次
概念实体关系
1对1
1对多
多对多
表与表之间的关系 参照完整性
外键
多对多
多对一
域对象之间的 关系
关联 (一对一 一对多 多对多)
依赖 (一个类需要访问另外一个类)
聚集 (一个类的对象是另一个类的一部分, 人和手)
一般化 (继承关系)
域对象
实体域对象 (实体EJB,POJO)
过程域对象 (会话EJB,消息驱动EJB,POJO)
事件域对象 ()
在hibernate中 一般只关注 实体域对象 和 过程域对象
域对象的关系
域对象的关联关系 是有方向的
体现在类的编码不一样的
单向关联
双向关联
域对象的持久化
把对象从内存中 保存到持久化设备中去
ORM 与 ORM模式
ORM模式是一种持久化技术,还有其他模式的持久化技术。如主动域模式(BMP),JDO模式,CMP模式。
域模型和数据模型的各个不匹配之处
1,继承
2,多对多
3,双向
4。粒度
尽量少连接查询,很消耗时间的操作
创建持久化类
1。持久化类符合javabean的规范,包含一些属性 以及对应的getxxx 色天下学习方法
2。持久化类有一个id属性,用来唯一表示类的每一个对象。 也叫OID 对象表示符
3。Hibernate要求持久化类必须提供一个不带参数的默认构造方法
创建数据库schema
创建对象-关系映射文件
(一般在eslispe中先创建数据库 然后再创建持久化类以及映射文件)
hibernate 映射类型
hibernate的初始化
static{
try{
//根据默认位置的hibernate配置文件创建 configuration实例
Configuration config = new Configuration();
config.addClass(Customer.class);
//创建SessionFactory 实例
sessionFactory = config.buildSessinoFactroy();
}catch(Exception e){e.printStackTrace();}
}
SessionFactory 接口
一个SessionFactory 实例是对应一个数据源的,应用从SessionFactory 获取session实例对象
1线程安全的
2重量级的,不能随意创建和销毁她的实例。
Session 接口
1 Session接口是hibernate应用最为广泛的接口。
2 Session也被称为持久化管理器,它提供和持久化相关的操作
3 Session有以下特点
a 不是线程安全的 所以应避免多线程共用一个Session实例
b Session实例是轻量级的,所谓轻量级是指他的创建和销毁不需要消耗太多的资源。意味着程序中可以经常创建和销毁Session实例,保证不多线程使用Session对象。
Session接口的常用方法:
save()
update()
delete()
load()
Session执行事务流程
Session session = factory.openSession();
Transaction tx;
try{
tx = session.beginTranscation();
//执行事务
...
//提交事务
tx.commit();
}
catche(Exception e)
{//如果出现异常,撤消事务
if(tx!=null)tx.rollback();
throw e;
}
finally{
session.close(); //不管事务是否成功,最后都要关闭session对象
}
}
posted on 2007-02-07 14:32
Super·shen BLOG 阅读(407)
评论(0) 编辑 收藏 所属分类:
JAVA技术