数据持久化(JDBC/EJB/JDO/OJB/Hibernate)

原创 2004年11月02日 14:06:00

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

JDO与Hibernate之比较(转载)

在我做过的很多项目的过程中,我一直有一个悬而未决的问题在困扰我,那就是持久层的开发。持久层的开发一般来说要么用CMP,要么用JDBC+ DAO。 CMP就不用说了,它对我来说是一种失败的实践,而JDB...
  • yiyo2025
  • yiyo2025
  • 2005年08月27日 16:13
  • 1355

Jdbc、Jdo方面问题

87、Class.forName的作用?为什么要用? 答:调用该访问返回一个以字符串指定类名的类的对象。 88、Jdo是什么? 答:JDO是Java对象持久化的新的规范,为javadata ob...
  • u010129251
  • u010129251
  • 2015年04月02日 17:43
  • 541

基于ejb3,对JDBC进行封装,让使用JDBC时能像hibernate使用annotation注解一样简便,而且更加轻巧

为了方便阅读,必须对Java的泛型和反射有一定的了解,以及hibernate的annotation注解使用有一定的了解,因为这个封装就是对hibernate的部分功能的模仿,虽然性能不像hiberna...
  • MEdwardM
  • MEdwardM
  • 2017年05月04日 10:34
  • 713

JDO概念 JDBC与Hibernate的区别

JDO的含义为Java数据对象JavaDataObject,是用于数据仓库对象的标准化API。 由于JDO提供了直接的对象存储,使开发人员将更多的精力放在业务逻辑上。Hibernate是对JDBC的...
  • huscker
  • huscker
  • 2016年11月08日 11:24
  • 341

EJB系列(六)——EJB数据持久化

在之前EJB系列博客中主要介绍了EJB作为业务容器,对业务逻辑的管理。但在另一方面,EJB的应用分为两方面: 1、Session bean和Message-driven bean定义了新的编程模型,以...
  • Daybreak1209
  • Daybreak1209
  • 2016年02月12日 10:36
  • 687

EJB——JPA持久化数据

继续前面的学习,我们现在要将实体持久化到数据库中,首先认识JPA实体,如下是Bit实体: package ejb3inaction.example.persistence; import j...
  • u013031185
  • u013031185
  • 2016年08月08日 00:00
  • 404

Hibernate与JDBC、EJB、JDO的比较

常用的数据库操作包括:JDBC、EJB、JDO以及Hibernate。它的各有优缺点: (1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高。但这种...
  • mcjentor
  • mcjentor
  • 2008年08月22日 23:00
  • 308

JDO快速入门

Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为J...
  • u010442302
  • u010442302
  • 2016年10月21日 23:47
  • 538

Hibernate EJB JDO JDBC的比较

常用的数据库操作包括:JDBC、EJB、JDO以及Hibernate。它们各有优缺点: (1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高。但这种...
  • superleo_007
  • superleo_007
  • 2009年12月12日 17:33
  • 340

Hibernate:入门及与JDBC优劣比较

JDBC优点        直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句。支持连接池。 JDBC缺点        因为JAVA是面向...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2015年12月01日 09:07
  • 1566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据持久化(JDBC/EJB/JDO/OJB/Hibernate)
举报原因:
原因补充:

(最多只允许输入30个字)