• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

What is hibernate?

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网
主要特性











Hibernate是一个object relational mapping的解决方案和一个持久管理方案或持久层。这样的解释可能不能使学习Hibernate的人明白。

 











你或许可以想象一下你的应用程序有很多功能(业务逻辑),你想把数据存到数据库里。当你所有的业务逻辑都用Java对象实现时,数据库的表却不是对象。

 











Hibernate提供了一个映射数据库表到Java class的解决办法。它复制数据库数据到object,也支持把object数据存储到数据库。以这种方法就可以使object转换一个或多个数据库表。

 











把数据保存到存储设备就叫做持久化。复制数据库表数据到object和从object把数据存进数据库表就叫做object relational mapping。

 











为什么要使用object relational mapping?











 











更好的系统架构











 











当你把所有的处理和数据库访问都写进了页面,这样你程序就有了很多的缺点。

 











它重用困难。你在许多地方写了重复的代码。使得你在需要更动的时候很难找到所有需要更改的地方。

 











当你把页面分成业务逻辑和持久逻辑等部分的时候,你能比较容易地更在其中一部分而不影响其它部分。

 











减少标准数据库操作编写时间











 











许多数据库查询都是简单的“insert,update,delete”语句。这完全没有必要开发这些单调乏味的语句。Hibernate帮助你节省了这些时间。

 











从数据库加载数据到类类似于以下代码

Query query = session.createQuery("select b from Bug as b");











      for (Iterator iter = query.iterate(); iter.hasNext();) {











        bugs.add((Bug) iter.next());











      }











    return bugs;

 











保存“bug”类类似于

 











session.update(bug);

 











自己难于实现一些高级功能











 











Hibernate提供的缓存方案(Caching solutions),事务处理(transactions)和其它功能都是不容易实现的。完全没理由去开发一些已经存在的东西,你仅仅只需要用Hibernate就可以实现上述功能了。

 











Hibernate是怎么工作的











我的意见是它比实体bean(entity beans)友好许多,hibernate只从一些简单的Java类开始(Pojo=Plain Old Java Objects)。

 











想使用hibernate你要先编写一个简单的java类:

public class Bug











implements Serializable











{











    private int hashValue = 0;











    private java.lang.Integer id;











    private java.lang.String title;











    public Bug()











    {











    }











    public Bug(java.lang.Integer fid)











    {











        this.setId(fid);











    }











    public java.lang.Integer getId() {











        return id;











    }











    public void setId(java.lang.Integer id) {











        this.id = id;











    }











    public java.lang.String getTitle() {











        return title;











    }











    public void setTitle(java.lang.String title) {











        this.title = title;











    }











.............

 











然后创建一个映射文件。映射文件描述Hibernate如何将类的字段映射到数据库字段。

<hibernate-mapping package="de.laliluna.fehlerbehebung">











<class name="Bug" table="bug">











<id name="id" column="fid" type="java.lang.Integer">











<generator class="sequence">











<param name="sequence">public.bug_fid_seq</param>











</generator>











</id>











<property name="title" column="ftitle" type="java.lang.String" />











</class>











</hibernate-mapping>











 











现在就可以使用hibernate类了。

例如新建一个数据库实体:

try {











    Bug bug = new Bug();











    bug.setTitle("Title");











    bug.setTuserFk(tuser);











    Transaction tx = session.beginTransaction();











    session.save(bug);











    tx.commit();











} catch (HibernateException e) {











    e.printStackTrace();











}











 











需要创建的描述文件可以用一些工具自动生成,例如MyEclipse。MyEclipse提供了创建类和直接从数据库表创建描述文件的功能。

 











Hibernate包括了以下工具:

l         从描述文件生成Java类

l         从现有数据表生成描述文件

l         从描述文件生成数据库表

 











 










延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网