這邊以一個簡單的單機程式來示範Hibernate的配置與功能,首先作資料庫的準備工作,在MySQL中新增一個demo資料庫,並建立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是一个流行的Java ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的编程,简化了数据...
在提供的文档“第一个Hibernate程序.doc”和源代码文件“FirstHibernate”中,你可以找到更具体的实现细节和解释,这对于理解并实践你的第一个Hibernate程序非常有帮助。通过这个起点,你可以进一步探索Hibernate的...
《Hibernate入门:初识与实践》 ...总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。通过实践,你可以逐步熟悉ORM思想,为后续的Java开发奠定坚实的基础。
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
### Eclipse开发第一个Hibernate程序 #### 引言 Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序,它能够将面向对象的数据模型与关系型数据库进行映射,简化了数据库的操作过程,使得开发者可以...
个人的第一个hibernate例子,下载后添加表,修改数据库连接,用户名密码即可使用。 参考网址: https://blog.csdn.net/yerenyuan_pku/article/details/64209343
"第一个Hibernate代码, Hello Hibernate" 这个标题表明我们将要探讨的是一个初学者级别的Hibernate教程,可能是通过一个简单的项目或示例来介绍如何使用Hibernate框架。Hibernate是一个开源的对象关系映射(ORM)...
**标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...
《我的第一个Hibernate程序》 在Java开发中,Hibernate是一个非常重要的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而非底层的SQL语法。本教程将引导你了解并实现“我的第一个Hibernate...
**第一个Hibernate小程序** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据存取的细节。本教程将介绍如何创建一个简单的Hibernate应用程序,...
这篇博客"配置第一个Hibernate程序"将引导我们逐步了解如何设置和运行一个基本的Hibernate项目。我们将讨论以下几个关键知识点: 1. **Hibernate概述**: Hibernate是一个对象关系映射(ORM)框架,它允许开发者用...
本文将带你一步步了解如何创建并运行你的第一个Hibernate程序,这是一个非常基础且详尽的教程,特别适合初学者理解Hibernate的核心概念。 首先,Hibernate是一个强大的对象关系映射(ORM)框架,它允许Java开发者在...
# Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的...
【标题】:“第一个Hibernate with Annotation程式(转)” 在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发人员使用面向对象的编程方式来操作数据库,而无需直接编写SQL语句。这个标题...
用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是一个开源的ORM框架,它的主要任务是将Java对象与...
【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...
数据库文件也打包在压缩文件里面了,因为已经亲自在Myeclipse8.5下调试成功过,所以免去了给位自己慢慢调试的麻烦,适合初学者学习hibernate。使用的版本是目前最新的hibernate,3.6.4
如果你也是自学,我写的这个程序你可以看下。绝对不会报错的哦,我试过了!!没写注释哈。。对不住了,我都不知道该怎么写,你要是看不懂,给我留言,我好加注释。。要知道我只看了一上午的书哦,菜也没办法!!!...