`

OJB和Hibernate框架的评议一

阅读更多
OJB和Hibernate是我用过两个O/R Mapping框架,附带说一句,我用OJB比Hibernate的时间长多了,因此对Hibernate的了解不深,因此有一些看法可能会有误。
 
 
OJB和Hibernate的机制基本上是样,没有多的区别,包括代理,约束,引用等, 都可以使用类SQL语句,OJB用OQL,Hibernate用HQL,也可以设置查询类,如,
 
不过 我两者在一个很大的设计的区别。
就是说数据填充上的设计
 
class User
{
    private String name;
 
    public void setName(String r_Name)
    {
        name=r_Name;
    }
 
    public String getName()
    {
        return name;
    }
}
 
OJB用下列描述符
<field-descriptor column="NAME" jdbc-type="VARCHAR" name="name" />
OJB的引擎将数据库填充到对象时是使用Reflection来设置name这个字段,有些象user.name=...
将对象中的数据保存到数据库时,也是这样
 
Hiberate用下列描述符
<property column="NAME" name="Name" not-null="true" type="string" />
Hibernate的引擎将数据库填充到对象时是使用Reflection来设置name这个属性,即调用user.setName(...);
将对象中的数据保存到数据库时,调用user.getName();
 
(我一向把Property看作带操作的field.)
 
想来 设计者分别采用这种方式,应该有各自的理由,但我个人还是比较喜欢OJB的方式。
原因如下
实体类应该只代表数据库,通过field就可以,使用Property进行访问,只是避免以后可能的改动,或者实体类不是单纯的实体类,可以带些简单的业务模型意义里面。因此用field可能会更好一些。
 
比如说 用OJB的话类可能象这样,getState返回String,给用户查看,如"冻结帐户","新注册用户"
 
class User
{
    private String name;
    private int state;
 
    public void setName(String r_Name)
    {
        name=r_Name;
    }
 
    public String getName()
    {
        return name;
    }
 
    public void setState(int r_State)
    {
        state=r_State;
    }
 
    public String getState()
    {
        if(...)
        return ...;
        else
        return ...        
    }
}
 
用Hibernate的类象这样
 
class User
{
    private String name;
    private int state;
 
    public void setName(String r_Name)
    {
        name=r_Name;
    }
 
    public String getName()
    {
        return name;
    }
 
    public void setState(int r_State)
    {
        state=r_State;
    }
 
    public void getState()
    {
        return state;
    }
 
    public String getStateString()
    {
        if(...)
        return ...;
        else
        return ...        
    }
}
 
我总是觉得OJB的看起来更顺眼一些
当然我不是说Hibernate不好
不过在一般的中小型程序中,很少有纯粹的实体类,多多少少都带了一点业务,或者因为其它原因,如上面的原因,OJB可能会有点优秀。
 


分享到:
评论

相关推荐

    OJB 持久层框架的帮助文档资料

    OJB(Object-Relational Bridge)是一个开源的Java持久层框架,它在对象世界和关系数据库之间建立桥梁,解决了Java应用程序中的数据持久化问题。OJB通过ORM(对象关系映射)技术,使得开发者可以使用面向对象的方式...

    ③db-ojb-1.0.rc5.zip

    1. **源代码**:Java源文件,包含了db-ojb的实现细节和Struts集成的相关代码。 2. **文档**:用户指南、开发者文档、API参考等,帮助理解如何使用和扩展db-ojb。 3. **配置文件**:如XML配置文件,用于设置db-ojb和...

    传智播客李勇hibernate

    - ORM(对象关系映射)框架的出现,如Hibernate、TopLink和OJB,解决了模型间的转换问题,提供了面向对象的方式来操作数据库。 2. **安装配置Hibernate**: - 下载Hibernate最新或特定版本(如3.2.5)。 - 添加...

    Hibernate4

    **Hibernate** 是一个面向 Java 领域的持久化框架,它属于 ORM(Object-Relational Mapping,对象关系映射)的一种实现方式。所谓“持久化”,通常指的是将程序运行时的数据状态保存至磁盘等持久性存储设备的过程,...

    hibernate主要知识点

    ORM 框架如 Hibernate、TopLink 和 OJB 等,能够将数据库中的表映射为 Java 对象,简化了数据访问层的实现。 ### 开发流程 1. **由 Domain Object 到 mapping 到 db**:这是官方推荐的方式,先设计好业务对象,...

    hibernate知识简介.ppt

    Hibernate 是最受欢迎的ORM框架之一,因其灵活性和高效性而备受青睐。它提供了丰富的API和配置选项,支持多种数据库,包括事务管理、第二级缓存等功能。由于其活跃的社区支持和持续的更新,Hibernate 成为了Java...

    SSH学习之Hibernate

    除了Hibernate,还有其他如Apache OJB、iBatis和J2EE的CMP等持久层框架。虽然每种框架都有其特点和适用场景,但Hibernate因其强大的功能、丰富的社区支持和广泛的应用,成为了Java世界中持久层的首选工具。 **总结*...

    尚硅谷佟刚 Hibernate1

    TopLink和OJB也是ORM领域的选择,但Hibernate在社区支持和功能完善度上具有优势。 在开发环境中集成Hibernate,通常需要导入所需的Hibernate库和数据库驱动的JAR包,并通过Eclipse插件(如Hibernate Tools)进行...

    1.Hibernate-01-基本使用详细大纲1

    1. Apache OJB:Object-Relational Bridge,提供了类似的功能,但可能不如 Hibernate 功能强大和流行。 2. Cayenne:Apache 旗下的另一个 ORM 解决方案,提供更高级的特性,如图形化的数据模型设计工具。 3. JPA...

    Intro to Hibernate TCJUG

    在“对象到数据库”空间中,存在着多种技术和框架,包括标准化 API(如 JDO 实现、J2EE CMP 和 OJB)以及专有 API(如 TopLink、CocoBase O/R 和 Hibernate)。Hibernate 作为其中的一员,其独特之处在于它提供了一...

    Hibernate入门教程

    在Java环境下,ORM框架如实体Bean、OJB、JDO和Hibernate提供了对持久数据的不同处理方式。Hibernate作为ORM的一种,不仅实现了Java类到数据表的映射,还提供了查询和数据恢复机制。这降低了开发者编写SQL语句的负担...

    spring2.5 -3.0 hibernate3.3 jar包说明

    提供了对多种ORM技术的支持,如iBATIS、JDO、OJB和Hibernate。如果项目中使用了这些技术之一,则需要此Jar包。 9. **spring-remoting.jar** 支持远程调用功能,例如EJB、JMS、RMI、Hessian、Burlap、HttpInvoker...

    db-ojb-1.0.4-tools.zip_db-ojb-1.0.4.jar_db-ojb-1.0.rc5.zip

    OJB是一个开源的Java框架,它的主要功能是作为Java应用程序与关系型数据库之间的桥梁,实现对象与数据库之间的映射。这个标题提到了三个版本的文件:1.0.4、1.0.4-tools以及1.0.rc5,这可能是OJB的不同发布版本或...

    hibernate经典教程

    与其他ORM框架如Apache OJB、iBatis相比,Hibernate具有以下优势: - 功能强大且成熟,已成为Java ORM的事实标准。 - 提供良好的性能,支持二级缓存和查询优化。 - 提高开发效率,降低维护成本,通过对象操作即可...

Global site tag (gtag.js) - Google Analytics