`

第一个hibernate

阅读更多

這邊以一個簡單的單機程式來示範Hibernate的配置與功能,首先作資料庫的準備工作,在MySQL中新增一個demo資料庫,並建立user表格: 

create table T_USER (
    id bigint not null auto_increment,
    name varchar(255),
    age bigint,
    primary key (id)
)


對於這個表格,您有一個User類別與之對應,表格中的每一個欄位將對應至User實例上的Field成員。

  • User.java
package onlyfun.caterpillar;

public class User {
    private Long id;
    private String name;
    private Long age;
 
    // 必須要有一個預設的建構方法
    // 以使得Hibernate可以使用Constructor.newInstance()建立物件
    public User() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
 
    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }
}


其中id是個特殊的屬性,Hibernate會使用它來作為主鍵識別,您可以定義主鍵產生的方式,這是在XML映射文件中完成,為了告訴 Hibernate您所定義的User實例如何映射至資料庫表格,您撰寫一個XML映射文件檔名是User.hbm.xml,如下所示: 

  • User.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="onlyfun.caterpillar.User" table="T_USER"> 

        <id name="id" column="id"> 
            <generator class="native"/> 
        </id> 

        <property name="name" column="name"/> 

        <property name="age" column="age"/> 

    </class> 

</hibernate-mapping>


<class>標籤的name屬性為所映射的物件,而table為所映射的表格;<id>中 column屬性指定了表格欄位,而 type屬性指定了User實例的中的id之型態。<id>中主鍵的產生方式在這邊設定為"native",表示主鍵的生成方式由Hibernate根據資料庫Dialect 的定義來決定,之後還會介紹其它主鍵的生成方式。

同樣的,<property>標籤中的column與type都各自指明了表格中欄位與物件中屬性的對應。

建議將映射文件與編譯出來的User.class放在同一個資料夾之中。

接著必須在Hibernate配置文件hibernate.cfg.xml中指明映射文件的位置,如下加入映射文件位置:
 

  • hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
	
<hibernate-configuration> 

    <session-factory> 

    ....

    <!-- 物件與資料庫表格映射文件 --> 
    <mapping resource="onlyfun/caterpillar/User.hbm.xml"/> 

    </session-factory> 

</hibernate-configuration> 


在使用Hibernate之前,必須先讀入hibernate.cfg.xml文件訊息,配置文件訊息在 Hibernate中對應的代表物件是Configuration物件,當中包括了配置文件訊息,您可以從Configuration中建立 SessionFactory物件,顧名思義,SessionFactory是用來建立Session物件,其作用類似於JDBC中的 Connection物件,不過負責更多關於一次資料庫操作會話的功能。

一個應用程式當中通常只需要一個SessionFactory實例,為了方便整個應用取得同一個SessionFactory實例,可以撰寫一個HibernateUtil類別:

  • HibernateUtil.java
package onlyfun.caterpillar;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    private static SessionFactory sessionFactory;
    static {
        try {
            sessionFactory = new Configuration().configure()
                    .buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        getSessionFactory().close();
    }
}


HibernateUtil類別在載入JVM後就會新建Configuration、讀入hibernate.cfg.xml,而後建立SessionFactory實例,您可以藉由其所提供的兩個static方法來取得SessionFactory物件。

接下來撰寫一個測試的程式,這個程式直接以Java程式設計人員熟悉的語法方式來操作物件,而實際上也直接完成對資料庫的操作,程式將會將一筆資料存入表 格之中: 

  • HibernateDemo.java
package onlyfun.caterpillar;

import org.hibernate.Session;
import org.hibernate.Transaction;

public class HibernateDemo {
    public static void main(String[] args) {
        User user = new User(); 
        user.setName("caterpillar"); 
        user.setAge(new Long(30)); 

        // 開啟Session,相當於開啟JDBC的Connection
        Session session = HibernateUtil.getSessionFactory().openSession(); 
        // Transaction表示一組會話操作
        Transaction tx= session.beginTransaction(); 
        // 將物件映射至資料庫表格中儲存
        session.save(user);
        tx.commit(); 
        session.close(); 
        
        System.out.println("新增資料OK!請先用MySQL觀看結果!");
        
        HibernateUtil.shutdown();
    }
}


如您所看到的,程式中只需要直接操作User物件,並進行Session與Transaction的相關操作,Hibernate就會自動完成對資料庫的 操作,您看不到任何一行JDBC或SQL的陳述

接著可以開始運行程式,結果如下:

 

Hibernate: 
    insert 
    into
        T_USER
        (name, age) 
    values
        (?, ?)
新增資料OK!請先用MySQL觀看結果!

 

執行結果中顯示了Hibernate所實際使用的SQL,由於這個程式還沒有查詢功能,所以要進入MySQL中看看新增的資料,如下:

mysql> SELECT * FROM T_USER;
+----+-------------+------+
| id    | name         | age  |
+----+-------------+------+
|  1    | caterpillar |   30   |
+----+-------------+------+
1 row in set (0.03 sec)

 

分享到:
评论

相关推荐

    我的第一个Hibernate 程序

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

    第一个hibernate程序及解释

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

    hibernate第一个hibernate

    《Hibernate入门:初识与实践》 ...总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。通过实践,你可以逐步熟悉ORM思想,为后续的Java开发奠定坚实的基础。

    菜鸟快速运行第一个hibernate

    标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...

    Eclipse开发第一个Hibernate

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

    第一个hibernate例子

    个人的第一个hibernate例子,下载后添加表,修改数据库连接,用户名密码即可使用。 参考网址: https://blog.csdn.net/yerenyuan_pku/article/details/64209343

    第一个Hibernate代码, Hello Hibernate

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

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    我的第一个hibernate程序

    《我的第一个Hibernate程序》 在Java开发中,Hibernate是一个非常重要的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而非底层的SQL语法。本教程将引导你了解并实现“我的第一个Hibernate...

    第一个Hibernate小程序

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

    配置第一个Hibernate程序

    这篇博客"配置第一个Hibernate程序"将引导我们逐步了解如何设置和运行一个基本的Hibernate项目。我们将讨论以下几个关键知识点: 1. **Hibernate概述**: Hibernate是一个对象关系映射(ORM)框架,它允许开发者用...

    第一个Hibernate程序(有注释)

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

    我的第一个hibernate例子

    # Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的...

    第一个Hibernate with Annotation程式(转)

    【标题】:“第一个Hibernate with Annotation程式(转)” 在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发人员使用面向对象的编程方式来操作数据库,而无需直接编写SQL语句。这个标题...

    用myeclipse作的第一个hibernate连接mysql数据库的例子

    用myeclipse作的第一个hibernate连接mysql数据库的例子. 先在mysql数据库中创建好课程表,建表的命令如下: create table kcb(kch char(10) primary key,kcm char(20),kxxq int,xs int,xf int). 代码主要在src文件夹...

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

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

    hibernate第一个例子

    【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...

    第一个hibernate程序

    数据库文件也打包在压缩文件里面了,因为已经亲自在Myeclipse8.5下调试成功过,所以免去了给位自己慢慢调试的麻烦,适合初学者学习hibernate。使用的版本是目前最新的hibernate,3.6.4

    我模仿的第一个Hibernate程序

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

Global site tag (gtag.js) - Google Analytics