分享
 
 
 

What is hibernate?

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

主要特性

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 从描述文件生成数据库表

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有