本文主要讲如何搭建Hibernate开发环境和简单实例。

一、搭建开发测试环境

1.1 下载Hibernate

  从Hibernate官方网站上下载最新的Hibernate ORM,从Hibernate官方文档页面可以看到相应的最新帮助文档内容。

  我下载了当前最新的Hibernate压缩包为hibernate-release-4.3.6.Final.zip,这里面也包含了相应的帮助文档,不过在线的帮助文档有所差别,会更加全面一些。

1.2 在Eclipse中配置Hibernate

  Hibernate不存在安装的说法,只需要在目标Java工程中添加Hibernate相应的库文件即可。具体操作步骤如下:

  • 打开eclipse->windows->preferences->java->build path->user libraries,点击new,新建一个library,可取名为HibernateLib;
  • 点击Add JARs,选择上一步解压出来的文件夹hibernate-release-4.3.6.Final->lib->required中的所有jar文件;
  • 下载数据库对应的JDBC驱动,我这里用的是Windows SQL Server 2008,所以从微软官网下载了一个sqljdbc4.jar。当然,如果使用MySQl或者Oracle,也需要下载相应的JDBC驱动。
  • 将JDBC驱动添加到Eclipse依赖库中。

1.3 配置数据库

  这里主要是为了测试Hibernate,所以搭建一个简单的数据库和测试表即可,创建的SQL语句如下:

create database hibernate
go
use hibernate
go
create table student(id int primary key, name varchar(20), age int)

  这样就创建了一个名为hibernate的数据库,并且包含一张名为student的表格,表格中有三列分别是:id、name、age。

二、测试代码实例

2.1 创建Java工程

  • 在Eclipse中新建一个名为HibernateDemo的工程,其package可以命名为com.xiaoku.hibernate.model。
  • 添加工程环境配置中创建的User Library,添加方法为:右键单击工程名,选择Build Path->Add Libraries->User Library->Next->勾选HibernateLib->Finish。

2.2 新建一个简单类

  将此类定义于com.xiaoku.hibernate.model包下。类定义具体内容如下:

package com.xiaoku.hibernate.model;

public class Student {
private int id; // ID
private String name; // NAME
private int age; // AGE public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

 2.3 修改Hibernate配置文件

  Hibernate配置文件默认命名为hiberante.cfg.xml,不要尝试修改此文件名。在hibernate-release-4.3.6.Final\project\etc文件夹中包含了一个hiberante.cfg.xml配置文件示例,可以直接拿过来修改即可。当然在工程根目录新建一个hiberante.cfg.xml也可以。我这里使用SQL Server,配置文件的示例如下:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory> <!-- Database connection settings -->
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=hibernate</property>
<property name="connection.username">sa</property>
<property name="connection.password">12345678</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sqlserver">true</property> <!--根据需要自动生成、更新数据表-->
<property name="hbm2ddl.auto">update</property>
<property name="myeclipse.connection.profile">sqlserver</property> <mapping resource="com/xiaoku/hibernate/model/Student.hbm.xml"/> </session-factory>
</hibernate-configuration>

  如果使用其他的数据库,请相应修改其中的数据库驱动、用户名密码等信息。注意上面配置文件中指定了mapping resource,这个值可根据包名和类名做修改。若类名为Student,则此处的类配置文件必为:Student.hbm.xml。

2.4 创建一个Mapping文件

  这里Student类要用到数据库,所以针对Student类创建一个Mapping文件名为Student.hbm.xml,放在com.xiaoku.hibernate.model包下。内容大致如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.xiaoku.hibernate.model">
<class name="Student">
<id name="id"></id>
<property name="name"></property>
<property name="age"></property>
</class>
</hibernate-mapping>

  注意文件开始处的配置,此处与hibernate.cfg.xml不一样。

2.5 创建一个StudentTest用于测试

  创建一个测试类StudentTest.java,放在com.xiaoku.hibernate.model包下代码如下:

package com.xiaoku.hibernate.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class StudentTest {
public static void main(String[] args){
Student s = new Student();
s.setId(1);
s.setName("猪猪");
s.setAge(28); Configuration cfg = new Configuration();
SessionFactory sf = cfg.configure().buildSessionFactory(); Session session = sf.openSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sf.close();
}
}

 2.6 运行结果

  在Eclipse中会提示buildSessionFactory()这个函数被deprecated,但实际上程序还是可以运行成功的。

  检查数据库中的student表,可以发现多了一条记录(1,'猪猪', 28)。表明Hibernate成功执行了数据库插入操作。

小结:

  本文介绍了Hibernate最简单的一个入门实例,可以对Hibernate的使用有一个清晰直观的认识了。

Hibernate入门学习(二)的更多相关文章

  1. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  2. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  3. git入门学习(二):新建分支/上传代码/删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  4. Egg入门学习(二)---理解service作用

    在上一篇文章 Egg入门学习一 中,我们简单的了解了Egg是什么东西,且能做什么,这篇文章我们首先来看看官网对Egg的整个框架的约定如下,及约定对应的目录是做什么的,来有个简单的理解,注意:我也是按照 ...

  5. Hibernate入门学习-安装hibernate插件

    最近一直在学习ssh框架,为了更方便hibernate的使用,所以在eclipse下载hibernate插件,安装插件有两种方法 第一种:本地安装 1).插件的官网下载地址:http://tools. ...

  6. Hibernate入门学习(一)

    一.Hibernate是什么 Hibernate主要用来实现Java对象和数据表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间.Hibe ...

  7. Hibernate基础学习(二)—Hibernate相关API介绍

    一.Hibernate的核心接口      所有的Hibernate应用中都会访问Hibernate的5个核心接口.      (1)Configuration接口: 配置Hibernate,启动Hi ...

  8. node入门学习(二)

    一.模块系统 1.创建模块和引用模块 //如何创建一个模块 exports.hello = function(){ console.log('hello worl'); }; //这创建了一个模块 / ...

  9. Hibernate框架学习(二)——api详解

    一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. //1.创建,调用空参构造(还没有读配置文件) Configuration conf=new Configur ...

随机推荐

  1. VundleVim的安装与使用

    git:https://github.com/VundleVim/Vundle.vim vundle是一款vim编辑器的插件管理软,用起来很方便的原因有几点: 1)只要知道插件名称,就能搜索到并下载安 ...

  2. 开源 VS 商业,消息中间件你不知道的那些事

    11月23日,新炬网络中间件技术专家刘拓老师在DBA+社群中间件用户组进行了一次主题为“开源 VS 商业,消息中间件你不知道的那些事”的线上分享.小编特别整理出其中精华内容,供大家学习交流. 嘉宾简介 ...

  3. openvswitch——mac和vlan learning for ingress port

    对于普通的switch,都会有这个学习的过程,当一个包到来的时候,由于包里面有MAC,VLAN Tag,以及从哪个口进来的这个信息.于是switch学习后,维护了一个表格port –> MAC ...

  4. Apache搭建多个站点方法详解

    www.111cn.net 编辑:Bolshevik 来源:转载 Apache的虚拟主机是一种允许在同一台机器上配置多个不同站点的web服务器环境的,就是iis一样可以创建多站点了,但是apache需 ...

  5. ASP.NET Web API与Rest web api:发布到IIS(二)(同发布.NET webservice)

    本文档大部分来源于:http://www.cnblogs.com/zqzjs/p/4705994.html 工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1 ...

  6. sqlserver 索引

    什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...

  7. JavaScript学习记录总结(六)——js函数闭包特性

    <script type="text/javascript">    function arrdemo(){        var arr=["hello&q ...

  8. 2016 MIPT Pre-Finals Workshop Taiwan NTU Contest

    2016弱校联盟十一专场10.5 传送门 A. As Easy As Possible 假设固定左端点,那么每次都是贪心的匹配\(easy\)这个单词. 从\(l\)开始匹配的单词,将\(y\)的位置 ...

  9. UVa 1339 Ancient Cipher --- 水题

    UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...

  10. CString用法总结

    概述:CString是MFC中提供的用于处理字符串的类,是一种很有用的数据类型. 它很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作时方便了很多. 不管怎样,使用CString有很多的特殊 ...