Hibernate 的原理与配置

123网神

123网神

2016-01-29 12:53

Hibernate 的原理与配置,Hibernate 的原理与配置

  也许你听说过Hibernate的大名,但可能一直不了解它,也许你一直渴望使用它进行开发,那么本文正是你所需要的!在本文中,我向大家重点介绍Hibernate的核心API调用库,并讲解一下它的基本配置。

  看完本文后,我相信你对什么是ORM(对像/关系映射)以及它的优点会有一个深刻的认识,我们先通过一个简单的例子开始来展现它的威力。

  正如一些传统的经典计算机文章大都会通过一个“hello,world”的例子开始讲解一样,我们也不例外,我们也将从一个相对简单的例子来阐述Hibernate的开发方法,但如果要真正阐述Hibernate的一些重要思想,仅仅靠在屏幕上打印一些字符是远远不够的,在我们的示例程序中,我们将创建一些对象,并将其保存在数据库中,然后对它们进行更新和查询。

  阅读导航

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/java/)

  “Hello World”“Hello world”示例程序让您对Hibernate有一个简单的认识。
  理解Hibernate的架构介绍Hibernate接口的主要功能。
  核心接口Hibernate有5个核心接口,通过这几个接口开发人员可以存储和获得持久对象,并且能够进行事务控制
  一个重要的术语:TypeType是Hibernate发明者发明的一个术语,它在整个构架中是一个非常基础、有着强大功能的元素,一个Type对象能将一个Java类型映射到数据库中一个表的字段中去。
  策略接口Hibernate与某些其它开源软件不同的还有一点――高度的可扩展性,这通过它的内置策略机制来实现。
  基础配置Hibernate可以配置成可在任何Java环境中运行,一般说来,它通常被用在2-3层的C/S模式的项目中,并被部署在服务端。
  创建一个SessionFactory对象要创建一个SessionFactory对象,必须在Hibernate初始化时创建一个Configuration类的实例,并将已写好的映射文件交由它处理。

  “Hello World”

  Hibernate应用程序定义了一些持久类,并且定义了这些类与数据库表格的映射关系。在我们这个“Hello world”示例程序中包含了一个类和一个映射文件。让我们看看这个简单的持久类包含有一些什么?映射文件是怎样定义的?另外,我们该怎样用Hibernate来操作这个持久类。

  我们这个简单示例程序的目的是将一些持久类存储在数据库中,然后从数据库取出来,并将其信息正文显示给用户。其中Message正是一个简单的持久类:,它包含我们要显示的信息,其源代码如下:

  列表1 Message.Java 一个简单的持久类

  package hello;
  public class Message {
  private Long id;
  private String text;
  private Message nextMessage;
  private Message() {}
  public Message(String text) {
  this.text = text;
  }
  public Long getId() {
  return id;
  }
  private void setId(Long id) {
  this.id = id;
  }
  public String getText() {
  return text;
  }
  public void setText(String text) {
  this.text = text;
  }
  public Message getNextMessage() {
  return nextMessage;
  }
  public void setNextMessage(Message nextMessage) {
  this.nextMessage = nextMessage;
  }
  }

  Message类有三个属性:Message的id 、消息正文、以及一个指向下一条消息的指针。其中id属性让我们的应用程序能够唯一的识别这条消息,通常它等同于数据库中的主键,如果多个Message类的实例对象拥有相同的id,那它们代表数据库某个表的同一个记录。在这里我们选择了长整型作为我们的id值,但这不是必需的。Hibernate允许我们使用任意的类型来作为对象的id值,在后面我们会对此作详细描述。

  你可能注意到Message类的代码类似于JavaBean的代码风格,并且它有一个没有参数的构造函数,在我们以后的代码中我将继续使用这种风格来编写持久类的代码。

  Hibernate会自动管理Message类的实例,并通过内部机制使其持久化,但实际上Message对象并没有实现任何关于Hibernate的类或接口,因此我们也可以将它作为一个普通的Java类来使用:

  Message message = new Message("Hello World");
  System.out.println( message.getText() );

  以上这段代码正是我们所期望的结果:它打印“hello world”到屏幕上。但这并不是我们的最终目标;实际上Hibernate与诸如EJB容器这样的环境在持久层实现的方式上有很大的不同。我们的持久类(Message类)可以用在与容器无关的环境中,不像EJB必须要有EJB容器才能执行。为了能更清楚地表现这点,以下代码将我们的一个新消息保存到数据库中去:

  Session session = getSessionFactory().openSession();
  Transaction tx = session.beginTransaction();

展开更多 50%)
分享

猜你喜欢

Hibernate 的原理与配置

Java JAVA基础
Hibernate 的原理与配置

Hibernate分页查询原理解读

Java JAVA基础
Hibernate分页查询原理解读

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

jsp hibernate 数据保存操作的原理

Web开发
jsp hibernate 数据保存操作的原理

Weblogic上配置Hibernate为JNDI

Java JAVA基础
Weblogic上配置Hibernate为JNDI

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Eclipse添加xml文件提示及Hibernate配置学习

编程语言 网络编程
Eclipse添加xml文件提示及Hibernate配置学习

Struts与Hibernate协同工作

Java JAVA基础
Struts与Hibernate协同工作

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《刀剑神域 虚空碎片》DLC任务威胁的溶体攻略

《刀剑神域 虚空碎片》DLC任务威胁的溶体攻略

JDO 2.0查询语言的特点

JDO 2.0查询语言的特点
下拉加载更多内容 ↓