数据持久化(JDBC/EJB/JDO/OJB/Hibernate)
来源:互联网 发布:mac.gj.qq.com 编辑:程序博客网 时间:2024/05/22 00:31
1。问题域
1)持久
数据可访问的而且还必须是持久
持久数据存储就是即使在服务器崩溃的情况下仍能存在的数据存储
2)问题域
对象关系的映射(ORM)
持久数据的访问(DA)
3)考究点
数据完整性
并发性
连接管理
数据同步
2。你还在写sql访问数据库吗?
你仍然在Write SQL? 仍然使用JDBC+ SQL(DAO)?当然这是访问持久数据层最原始、最直接的方法,运行效率高,但是
DAO对象和SQL语言紧密耦合,难以维护。
3。J2EE的数据解决方案?
EJB BMP&CMP(Entity Bean/Session Bean/)
Entity bean:霸占资源/并发请求的响应时间慢
Session bean:?
4。JDO
JDO是Java Database Object ,面向对象的持久性机制,轻量级的框架。
持久对象PO和POJO
PO Persistent Object,对应数据库中的entity
POJO plain ordinary Java object,无格式普通 Java 对象,装入和存储持久数据
5 JDO ORM
JDO的实现:
1)编写POJO
2)编译POJO
3)ORM
使用Enhancer,处理POJO的class文件,把POJO替换成同名的PO,完成对象与关系的映射
不同的JDO产品的Enhancer生成的PO字节码可能会有所不同,可能会影响在JDO产品之间的可移植性
4)运行PO
JSP也是在编译期被转换成Servlet来运行的,在运行期实际上运行的是Servlet,而不是JSP
6 JDO Problems
PO不能脱离PM (Hibernate Session) VO
静态的 POJO的Enhancer
不能运行期动态Enhance
JDO产品的分裂
标准的缺陷
7。OJB
Object Relational Bridge (OJB)
an ORM tool
allows transparent persistence for Java Objects against relational databases.
db.apache.org/ojb/
文档太简单,太少
OJB下一个版本全面支持JDO
8。Hibernate ORM
Hibernate的实现:
1、编写POJO
2、编译POJO
3、直接运行,在运行期,由Hibernate的CGLIB动态把POJO转换为PO。
9。What’ s a best ORM should be?
ORM
轻量级封装,避免引入过多复杂的问题,调试容易,也减轻程序员的负担。
具有可扩展性,API开放
产品有稳定的发展保障。
开源,功能定制。
Other
TopLink,CocoBase,Castor
Apache OJB
9。Hibernate
Java 对象持久层的轻量级封装框架
持久层设计的最佳实践的经验总结
ORM映射工具
提供从Java类到数据表之间的映射
提供数据查询和恢复机制。
大大减少操作数据库的工作量
相对于使用JDBC和SQL来手工操作数据库
和多种Web服务器或应用服务器良好集成
支持几乎所有的流行的数据库服务器(达16种),从而实现动态的Query
Application可用来在Java应用程序中取代大部分JDBC代码
10。 Solution?
读/写需要
多表映射
事务支持
开发周期
资源耗费
应用的量级
11。EJB Architecture Compare:
传统的架构:Entity Bean
Session Bean <-> Entity Bean <-> DB
JDBC
为了解决性能障碍的替代架构:
Session Bean <-> DAO <-> JDBC <-> DB
Hibernate
提高上面架构的开发效率的架构:
Session Bean <-> DAO <-> Hibernate <-> DB
对比
内存消耗/运行效率/开发效率/分布式/安全检查、集群、负载均衡的支持
可整合到J2EE系统中作为持久层框架
1)内存消耗:
采用JDBC的架构2无疑是最省内存的
Hibernate的架构3次之
EJB的架构1最差。
2)运行效率
JDBC的代码非常优化,JDBC架构运行效率最高
需要程序员非常精通JDBC,运用 Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,
采用结果集cache等等。一般情况下程序员做不到这一点
Hibernate/JDBC/EJB
3)开发效率:
在有JBuilder的支持下以及简单的项目,EJB架构开发效率最高,JDBC次之,Hibernate最差。
大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EJB架构很可能会失败。
4)分布式/安全检查,集群,负载均衡的支持
12。Implements Hibernate
1) 配置Hibernate
Hibernate的开发包
Hibernate的配置文件
hibernate.cfg.xml
connection.driver_class等
2) 创建数据模型
3) 创建持久对象
4) 编写对象和数据表的映射描述
5) 对象-关系映射xml文件
6)、编写和业务逻辑
持久化操作:Hibernate API
13。测试、发布
Benefits:
Performance
Lightweight
动态query
继承与多态
14。Resource:
www.hibernate.org
www.hibernate.org.cn:8000(hibernate中文网
www.sourceforge.net
www.huihu.org/com
- 数据持久化(JDBC/EJB/JDO/OJB/Hibernate)
- Hibernate与JDBC、EJB、JDO的比较
- Hibernate与JDBC、EJB、JDO的比较
- Hibernate EJB JDO JDBC的比较
- EJB系列(六)——EJB数据持久化
- JDO、EJB/CMP、Hibernate和Amber比较
- 简单比较 JDO、EJB-CMP、Hibernate、Amber
- EJB——JPA持久化数据
- JDO概念 JDBC与Hibernate的区别
- JDO、EJB/CMP、Hibernate和Amber的比较
- JDO、EJB/CMP、Hibernate和Amber的比较
- JDO、EJB/CMP、Hibernate和Amber的比较
- Hibernate(1)-使用Hibernate完成数据持久化
- 三、Hibernate数据持久化
- hibernate数据持久化原理
- 【hibernate】问题:hibernate无法持久化数据
- Hibernate和JDBC、EJB比较
- 使用JDBC对象持久化数据对象
- 向水晶报表传递参数
- 我用C写的打字程序
- 玩实况足球有感
- 下一代帖子的精华处理机制
- 与朋友分享的生活日记
- 数据持久化(JDBC/EJB/JDO/OJB/Hibernate)
- 一个具自我复制功能的程序
- MySQL数据库学习笔记(二)
- 构建一个.net Remoting 程序(真正的三层结构)_吐血推荐
- ASP.NET WEB FORMS 页面间的传值方法
- MySQL数据库学习笔记(三)
- 了解Struts(转贴)
- 用jsp做个有彩纹的随机码
- 装了2天的tomcat 都怪网上的资料 误人啊.......................