`
yangjizhong24
  • 浏览: 399179 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编写你的第一个Hibernate程序

阅读更多

注:转载http://www.nit-pro.org/jszl.asp?NewsID=3554

 

 

一、 Hibernate介绍
    Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案。ORM方案的思想是将对象模型表示的对象映射到关系型数据库中,或者反之。Hibernate目前是ORM思想在Java中最成功、最强大的实现。它于2001年的年末发布第一个版本,立即引起了广泛的注意。2003年6月,Hibernate2发表,并且获得Jolt大奖,进而被JBoss吸纳成为它的一个子项目。2005年3月,Hibernate 3发表,其中做了一些比较重大的改进。本文以Hibernate3为基础编写。

    另外,Hibernate除了可以在J2EE容器中运行外,还可以运行在Java应用程序中。本文就是以Java应用程序为例来介绍它。

二、配置开发环境
    本文以一个Java应用程序(Java Application)为例,介绍如何使用Hibernate来进行数据库操作。
    在进行Hibernate开发之前,需要首先获得Hibernate类库、相应数据库的JDBC驱动类库。Hibernate类库可以从http://www.hibernate.org中下载,目前的版本是3.0。而JDBC驱动可以根据不同的数据库来选择,在这个例子中,使用的是Oracle数据库,那么相应的JDBC驱动可以从Oracle安装目录\ora92\jdbc下获得。其他的数据库请根据相关的说明获得。

    下载Hibernate包后,可以将它解压到一个文件夹,此处假设为C:\hibernate-3.0,然后将C:\hibernate-3.0\下的hibernate.jar和C:\hibernate-3.0\lib下的那些第三方类库也放到环境变量CLASSPATH中。(通常,只需要dom4j、cglig、commons-logging、commons-collections、log4j、ehcache、asm、jta、antlr这些类库就可以了)

    做完这些配置后,就可以在此基础上进行基于Hibernate的Java程序开发了。

三、开发基于Hibernate的应用
    现在假设我们在Oracle数据库中创建了一个表Student,它的字段如下表所示:

字段 说明
Student_ID 学员编号,整型,PK,自动增长
Student_Name 学员姓名,字符串类型
Student_Age 学员年龄,整型
如果我们在Oracle中定义这个数据库表,我们可以定义一个创建数据库表的SQL脚本如下:
create table Student(
 Student_ID  number(6) NOT NULL PRIMARY KEY,
 Student_Name varchar2(10) NOT NULL,
 Student_Age number(2) NOT NULL
);

    另外,因为在Oracle中没有“自动增长”类型的字段,所以通常情况下我们需要定义一个sequence来作为自动增长类型字段的数据。在这里,我们也可以定义一个sequence来给Student_ID字段提供数据。创建sequence的SQL脚本如下:

CREATE SEQUENCE student_sequence
INCREMENT BY 1
START WITH 1000
NOMAXVALUE
NOCYCLE
CACHE 10;

    我们在这里创建了一个student_sequence,准备用来作为Student_ID字段的值。

    接着,我们需要一个hibernate.cfg.xml或者属性文件hibernate.properties来指定Hibernate所使用的数据库以及用户名、密码等其他相关的配置,我们在此使用xml文件,它的内容如下:

源文件:hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
<!--程序执行的时候是否显示真正的sql语句-->
  <property name="show_sql">true</property>
  <!--使用的SQL对应的“方言”,此处是Oracle9的“方言”-->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect
</property>
  <!--连接数据库的Driver-->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
  <!--数据库连接url-->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:nitpro
</property>
  <!--用户名-->
<property name="connection.username">system</property>
<!--密码-->
  <property name="connection.password">manager</property>
 </session-factory>
</hibernate-configuration>

    做完前面的这些准备工作后,下面就让我们进入激动人心的Hibernate编程吧!

    首先,我们需要定义一个用于表示“学生”对象的Student类:

源文件:Student.java
public class Student
{
    private int student_id;
    private String student_name;
    private int student_age;
   
    public int getStudent_id()
    {
        return student_id;
    }
    public String getStudent_name()
    {
        return student_name;
    }
    public int getStudent_age()
    {
        return student_age;;
    }
    public void setStudent_id(int id)
    {
        this.student_id = id;
    }
    public void setStudent_name(String name)
    {
        this.student_name = name;
    }
    public void setStudent_age(int age)
    {
        this.student_age = age;
    }
}

    这个类很简单,就是一个典型的JavaBean的定义:有三个属性:student_id、student_name和student_age,分别对应数据库表Student中的三个字段,并且在这个类中定义了对应各个属性的setter/getter方法。

    接下来,我们需要给这个类定义一个XML映射文件“Student.hbm.xml”,文件内容如下:

源文件:Student.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping
     PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>    
    <class name="Student" table="Student">        
        <id name="student_id" column="student_id" type="java.lang.Integer">            
            <generator class="native">        
                <param name="sequence">student_sequence</param>
            </generator>
        </id>        
        <property name="student_name" column="Student_Name"
 type="java.lang.String"/>
        <property name="student_age" column="Student_Age"
type="java.lang.Integer"/>
    </class>
</hibernate-mapping>

    注意,在这个xml文件中,我们首先使用class元素定义了我们定义的Java类和数据库表之间的关系,在这里,我们定义的Java类和数据库表名称都是Student,然后,我们使用id元素定义了主键名称、类型等,它有一个子元素generator来说明主键的产生方式,此处指定的是“native”,表示根据数据库来选择,比如,对于Oracle数据库,它会去寻找一个sequence(默认情况下,它会去寻找一个名为“hibernate_sequence”的sequence),我们可以用参数param来指定一个sequence。而property用来指定Student.java类中的属性和Student数据库表之间的对应关系,以及各个字段的数据类型。在这个例子中,我们指定的数据类型是Java语言中的数据类型(此时需要指定引用类型数据),我们也可以使用Hibernate中自定义的数据类型,限于篇幅,在本文中不一一讲解。

    然后,我们需要在hibernate.cfg.xml中加入这个文件的映射,可以在</session-factory>之前加入下面的语句:

<mapping resource="Student.hbm.xml"/>
最后,我们需要编写一个测试类来测试一下,能否通过Hibernate和前面我们定义的相关程序,完成对数据库的操作。我们编写一个测试类如下:
源文件:Test.java
import org.hibernate.*;
import org.hibernate.cfg.*;

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            //通过Configuration获得一个SessionFactory对象
SessionFactory sf
= new Configuration().configure().buildSessionFactory();
            //打开一个Session
            Session session = sf.openSession();
            //开始一个事务
            Transaction tx = session.beginTransaction();
            //创建一个Student对象
            Student stu = new Student();
            //通过Student的setter方法改变它的属性
            //注意student_id不用我们设置
            stu.setStudent_name("zhangsan");
            stu.setStudent_age(18);
            //通过session的save()方法将Student对象保存到数据库中
            session.save(stu);
            //提交事务
            tx.commit();
            //关闭会话
            session.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }   
}

    编译并运行这个程序,如果前面的配置和程序都没有问题,应该可以正确的往数据库表Student中插入一条数据,并且在控制台上能够得到如下输出(只列出部分输出内容):

Hibernate: select student_sequence.nextval from dual
Hibernate: insert into Student (Student_Name, Student_Age, student_id) values (?,?,?)

    可以看到,虽然我们自己没有编写SQL语句进行插入数据的操作,但是其实Hibernate还是要使用SQL语句来进行数据库的操作,只是这个过程对程序员来说是透明的。

    通过这个简单的例子,相信读者对Hibernate编程已经有了初步的了解。读者可以在此基础上进行更深入的学习。

分享到:
评论

相关推荐

    我的第一个Hibernate 程序

    【我的第一个Hibernate程序】这篇文章是关于初学者如何创建并运行第一个Hibernate程序的详细教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的编程,简化了数据...

    第一个hibernate程序及解释

    在提供的文档“第一个Hibernate程序.doc”和源代码文件“FirstHibernate”中,你可以找到更具体的实现细节和解释,这对于理解并实践你的第一个Hibernate程序非常有帮助。通过这个起点,你可以进一步探索Hibernate的...

    我的第一个hibernate程序

    在开始编写第一个Hibernate程序之前,我们需要确保以下软件和库已安装: 1. Java Development Kit (JDK):确保你的开发环境支持Java编程。 2. Maven或Gradle:构建管理工具,用于依赖管理和项目构建。 3. Hibernate...

    hibernate人生中第一个成功及完美程序(适合入门者)

    在这个“hibernate人生中第一个成功及完美程序”中,我们将深入探讨Hibernate的基本概念、核心功能以及如何构建一个简单的示例应用。 一、Hibernate概述 Hibernate是一个开源的ORM框架,它的主要任务是将Java对象与...

    hibernate第一个hibernate

    7. 第一个Hibernate程序: 创建一个简单的Java应用,初始化`SessionFactory`,打开`Session`,创建一个`User`对象并保存到数据库,最后关闭`Session`。这将演示基本的Hibernate操作流程。 8. 事务管理: ...

    第一个Hibernate程序(有注释)

    本文将带你一步步了解如何创建并运行你的第一个Hibernate程序,这是一个非常基础且详尽的教程,特别适合初学者理解Hibernate的核心概念。 首先,Hibernate是一个强大的对象关系映射(ORM)框架,它允许Java开发者在...

    hibernate入门小程序

    **hibernate入门小程序** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了方便...通过学习和实践这个入门小程序,你将掌握Hibernate的基本操作,为进一步深入学习和使用Hibernate打下坚实基础。

    第一个Hibernate小程序

    **第一个Hibernate小程序** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据存取的细节。本教程将介绍如何创建一个简单的Hibernate应用程序,...

    我模仿的第一个Hibernate程序

    如果你也是自学,我写的这个程序你可以看下。绝对不会报错的哦,我试过了!!没写注释哈。。对不住了,我都不知道该怎么写,你要是看不懂,给我留言,我好加注释。。要知道我只看了一上午的书哦,菜也没办法!!!...

    Eclipse开发第一个Hibernate

    ### Eclipse开发第一个Hibernate程序 #### 引言 Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序,它能够将面向对象的数据模型与关系型数据库进行映射,简化了数据库的操作过程,使得开发者可以...

    hibernate环境搭建及第一程序

    以上就是搭建Hibernate环境及编写第一个程序的基本步骤。在这个过程中,你需要理解Hibernate的核心概念,如SessionFactory、Session、Transaction,以及如何通过配置文件和映射文件将Java对象与数据库表关联起来。...

    hibernate程序高手秘笈-英文版

    5. **缓存机制**:理解Hibernate的缓存层次结构,包括第一级缓存和第二级缓存,以及查询缓存,如何配置和优化缓存以提高性能。 6. **事务管理**:学习Hibernate的事务处理,包括编程式事务管理和声明式事务管理,...

    第一个Hibernate代码, Hello Hibernate

    "第一个Hibernate代码, Hello Hibernate" 这个标题表明我们将要探讨的是一个初学者级别的Hibernate教程,可能是通过一个简单的项目或示例来介绍如何使用Hibernate框架。Hibernate是一个开源的对象关系映射(ORM)...

    Hibernate 的第一个例子

    在本文中,我们将深入探讨如何创建Hibernate的第一个例子,帮助初学者快速入门。** **一、Hibernate 简介** Hibernate 提供了丰富的API,简化了Java应用程序与关系数据库之间的交互。它通过XML配置文件或注解来定义...

    hibernate人生中第一个使用myEclipse成功及完美程序(适合入门者)

    【标题】:“Hibernate人生中第一个使用MyEclipse成功及完美程序”揭示了初学者如何在MyEclipse集成开发环境中配置并使用Hibernate框架进行数据库操作。这个教程是针对那些希望通过实践来掌握Hibernate技术的新手。 ...

    10Hibernate 程序设计

    1. **第一个Hibernate案例**: - 创建一个简单的`Customer`类,编写对应的映射文件,并通过Hibernate API完成添加记录的操作。 - 包含的文件有`hibernate.cfg.xml`、`Customer.hbm.xml`、`Customer.class`,以及...

    Hibernate5实例程序

    《Hibernate5实例程序》是一份专为学习Hibernate5框架所编写的代码实例集。Hibernate作为Java领域中的一款主流对象关系映射(ORM)工具,极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而非底层的SQL...

    Hibernate 3.6.3 入门程序

    通过`HibernateDemo`这个项目,你可以学习如何配置Hibernate,创建实体类,编写DAO(数据访问对象)层,使用HQL或Criteria API进行查询,以及如何处理对象关系映射等基本操作。这将是一个很好的起点,帮助你深入理解...

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

Global site tag (gtag.js) - Google Analytics