欢迎来到天天文库
浏览记录
ID:34140829
大小:396.50 KB
页数:35页
时间:2019-03-03
《Hibernate In Action 2.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、HibernateInAction中文版HHiibbeerrnnaatteeIInnAAccttiioonn中文版注:本教程来源于互联网,版权归原作者和出版商所有,仅供个人学习、参考之用,请勿保存、转载发布、以及用于商业用途,请支持正版。Java爱好者http://www.JavaFan.NET制作HibernateInAction中文版第二章引入与集成Hibernate理解一些Java应用对对象-关系映射的需求是对的,但你可能更急于看到活动的Hibernate。让我们从一个简单的例子开始,展示它的一些能力。你可能知道,编程书籍通过一个“HelloWor
2、ld”例子开始是一项传统。在本章中,我们将遵循这个传统,使用一个相对简单的“HelloWorld”程序来介绍Hibernate。然而,简单地在控制台窗口上打印一条消息并不足以实际地展示Hibernate。相反,我们的程序会将新建的对象存储到数据库中,更新它们,并且执行查询从数据库中取出它们。本章是以后各章的基础。除了这个规范的“HelloWorld”例子,我们还介绍了核心的HibernateAPI,并说明了如何在各种不同的运行环境例如J2EE应用服务器和独立的应用中配置Hibernate。2.1Hibernate中的“HelloWorld”Hiberna
3、te应用定义了映射到数据库表的持续类。我们的“HelloWorld”例子由一个类和一个映射文件组成。让我们看一下一个简单的持续类是什么样子的,映射是如何指定的,和我们使用Hibernate持续类的实例可以做的一些其它的事情。这个简单应用的目标是在数据库中存储消息并且取出它们进行显示。这个应用有一个简单的持续类“Message”,表示了这些用于打印的消息。我们的Message类如清单2.1所示。packagehello;publicclassMessage{//标识符属性privateLongid;Java爱好者http://www.JavaFan.NET
4、制作HibernateInAction中文版//消息文本privateStringtext;//另一个消息的引用privateMessagenextMessage;privateMessage(){}publicMessage(Stringtext){this.text=text;}publicLonggetId(){returnid;}privatevoidsetId(Longid){this.id=id;}publicStringgetText(){returntext;}publicvoidsetText(Stringtext){this.text
5、=text;}publicMessagegetNextMessage(){returnnextMessage;}publicvoidsetNextMessage(MessagenextMessage){this.nextMessage=nextMessage;}}(清单2.1)我们的Message类有三个属性:标识符属性,消息文本和另一个消息的引用。标识符属性允许应用访问数据库识别——持续性对象的主键。如果两个Message实例具有相同的标识符值,则它们表示了数据库中相同的行。我们将标识符属性的类型定义成了Long,但这并不是必须的。实际上,像你将要看到
6、的一样,Hibernate允许任意的标识符类型。Java爱好者http://www.JavaFan.NET制作HibernateInAction中文版你可能已经注意到了Message类的所有属性都具有JavaBean风格的属性访问方法。这个类也包含一个没有参数的构造方法。在我们的例子中使用的持续类几乎总是与此有些相似。Message类的实例可以由Hibernate进行管理(对其持续化),但这也不是必须的。因为Message对象没有实现任何Hibernate特定的类或接口,我们可以像任何其它Java类那样使用它:Messagemessage=newMess
7、age("HelloWorld");System.out.println(message.getText());这段代码精确地完成了我们刚提到过的对“HelloWorld”应用的期望:将“HelloWorld”打印到控制台上。这有点像我们在自作聪明;实际上,我们展示了Hibernate区别于其它一些持续性解决方案例如EJB实体Bean的一项重要特征。从根本上讲我们的持续类可以在任意的执行环境中使用——不需要专门的容器。当然,你到这里来是想看一下Hibernate,因此让我们将一个新的Message保存到数据库里:Sessionsession=getSes
8、sionFactory().openSession();Transactiont
此文档下载收益归作者所有