Hibernate 环境搭建

本文详细介绍了如何在MyEclipse2014中搭建Hibernate环境,包括导入jar包、创建配置文件hibernate.cfg.xml及model类对应的*.hbm.xml文件。并通过一个具体的例子演示了如何测试环境搭建的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate 的环境搭建

一、环境搭建

1.开发平台介绍

    <1>此处使用的开发工具是Myeclipse2014,其他支持Java EE 的开发平台也可。

    <2>数据库:MySQL 

    <3>navicat ,是MySQL 的可视化软件。

说明:

    其他支持数据库的可视化软件也可。数据库也不局限与MySQL。

2.搭建步骤介绍

Hibernate 环境搭建一般可通过三步骤实现:

    <1>导入开发jar 包

    <2>创建Hibernate 的配置文件hibernate.cfg.xml

    <3>创建对应数据库中标的model 类及相应的文件*.hbm.xml 文件

配置文件*.hbm.xml 的通配符指代类名,一般配置文件通配符的位置和对应的类名一致。

例如:

    Student.java 的配置文件为Student.hbm.xml

二、实现Hibernate 环境搭建

    以下相关包、类及文件命名自定义

1.创建Java Project 工程,命名为HibernateProject


图2-1-1.HibernateProject 工程图

2.导入相关jar 包

    <1>选中工程HibernateProject 鼠标右键新建文件夹,依次选择菜单命令New --> Folder 新建文件夹命名为lib 将MySQL 驱动jar 包mysql-connector-java-5.1.7-bin.jar复制到该文件夹下;

    <2>选中该驱动包鼠标右键,依次选择菜单命令 Build Path --> Add to Build Path 将jar 导入此Java Project 工程。

说明:

    导入相关包,因为我们要完成hibernate 环境的搭建,不需要更多的功能。此处只需导入MySQL 的数据库驱动jar 包,并build path即可。更多开发功能需要导入对应的开发工具包。

3.创建配置文件hibernate.cfg.xml

    选中工程HibernateProject 鼠标右键,依次选择菜单命令MyEclipse --> Project Facets [Capabilities] --> Install Hibernate Facet。

    选择Install Hibernate Facet 菜单命令后,会自定义创建Hibernate 配置文件。图示如下:


图2-3-1.配置Hibernate 版本图


图2-3-2.创建hibernate.cfg.xml 文件图

图2-3-3.配置jdbc图

说明:创建hibernate.cfg.xml 配置文件,

    URL:配置连接的数据库,此处数据库为mysql2

    此处配置的是MySQL ,所以驱动为com.jdbc.mysql.Driver

    username:数据库账户名,一般为root(如果你没有修改的话)

    password:数据库账户密码(安装数据库时自己设置的密码,这个应该只有自己知道)

    Dialect:此处选择MySQL


图2-3-4.选择Hibernate 包图

    这个过程结束后,会在java project 项目的src 下存在新建的Hibernate 配置文件hibernate.cfg.xml


图2-3-5.hibernate.cfg.xml 文件图

4.创建model 类并创建对应的*.hbm.xml 文件

    <1>在src 下创建包cn.edu.hpu.model,在该包下新建类Student

    私有属性id,name,gender,并添加setter() 与getter() 方法,

    创建无参构造方法、有参构造方法及重写toString() 方法。

说明:

    Hibernate 在创建对应model 类的*.hbm.xml 文件后,还需要在hibernate.cfg.xml 中配置映射*.hbm.xml 之后可根据配置生成表策略及设计表(*.hbm.xml 文件即设计表结构)来创建对应的数据表。

    代码如下:

package cn.edu.hpu.model;

public class Student {
	private Integer id;
	private String name;
	private String gender;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", gender=" + gender
				+ "]";
	}
	public Student(Integer id, String name, String gender) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
	}
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
}
    <2>创建该model 类对应的*.hbm.xml 文件

    默认该新建的配置文件名为Student.hbm.xml

    代码如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.edu.hpu.model">
    <class name="Student" table="STUDENT" dynamic-insert="true">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" /><!-- 指定主键的生成方式, native: 使用数据库本地方式 -->
        </id>
        <property name="name" type="java.lang.String" not-null="true">
        	<column name="NAME"></column>
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>

    </class>
</hibernate-mapping>
    <3>节点说明

    Student.hbm.xml 文件配置了model 的相关属性,指定了该Java 类对应的表名,列名、类型及主键。

      (1)package 属性值是当前类Student.java 所在包的包名

      (2)class节点

    -- name 属性值为对应的类的类名

    -- table 属性值为数据表的表名

说明:

    如果package 属性未设置,此处class 的属性值应为类的全类名:name="cn.edu.hpu.model.Student"

      (3)id 节点

      一般id 节点为主键,通过子节点generator 设置主键的生成方式。

      column 节点设置列名,name 属性值为列名
      (4)property

      普通属性节点。

      -- name 属性值一般为对应model 类中的属性;

      -- type 对应属性的数据类型;

      -- not-null 指定数据表中此字段不为空;

      -- column 指定数据表中对应该属性的列名。

    <4>配置hibernate.cfg.xml 

    model 类及对应的*.hbm.xml 文件都已处理好。此时在hibernate.cfg.xml 配置映射*.hbm.xml 文件,让hibernate 来管理相关数据。

    配置文件代码如下:

<?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">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>

	<property name="hbm2ddl.auto">update</property><!-- 设置生成表策略 -->

	<!-- 设置本地数据库方言 -->
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>

	<property name="connection.url">
		jdbc:mysql://localhost:3306/mysql2
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">739150</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>

	<property name="format_sql">true</property><!-- 格式化良好的sql 语句 -->
	<property name="show_sql">true</property><!-- 在控制台显示hql 语句 -->

	<!-- 配置映射*.hbm.xml -->
	<mapping resource="cn/edu/hpu/model/Student.hbm.xml" />

</session-factory>

</hibernate-configuration>
    配置完成后此时其视图如下:

图2-4-4.hibernate.cfg.xml 配置文件图

三、环境测试

    以上配置数据及相关参数不出错的情况下,这样hibernate 基本的配置就完成了。项目结构图如下:


图3-1-1.项目结构图

1.测试环境搭建是否成功

    在src 下新建包cn.edu.hpu.test 新建测试类HbmTest (此测试类需要导入Junit 4 包支持)

    代码如下:

package cn.edu.hpu.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;

import cn.edu.hpu.model.Student;

public class HbmTest {

	@Test
	public void test(){}
	/**
	 * 测试hibernate 本地数据库连接
	 * 方法功能:
	 * 		通过生成表策略创建或更新表,实例化一个student 对象。
	 * 		并插入一条对应该student 对象的记录到数据表中。
	 */
	@Test
	public void testSave(){
		SessionFactory sessionFactory = null;
		
		//创建一个Configuration对象:对应hbm的基本配置信息和关系映射信息
		Configuration configuration = new Configuration().configure();
		
		//创建ServiceRegistry对象,用于注册hbm的配置信息
		ServiceRegistry serviceRegistry = 
				new ServiceRegistryBuilder().applySettings(configuration.getProperties())
											.buildServiceRegistry();
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		
		Session session = sessionFactory.openSession();//1.创建Session 对象
		Transaction trans = session.beginTransaction();//2.创建Transaction 对象
		
		Student student = new Student(1,"zhangsan","male");//3.实例化一个对象
		session.save(student);
		
		trans.commit();//4.提交事务
		session.close();
		sessionFactory.close();//5.关闭Session 和SessionFactory
	}
}
    测试testSave() 方法,运行成功无异常抛出。

2.测试过程描述

    <1>测试类HbmTest 中testSave 方法测试了,hibernate 环境下相关对象的创建与使用;

    <2>创建Session 对象,通过beginTransaction() 方法开始事务。

    <3>实例化一个对应Student 对象,

    <4>调用session 对象的save() 方法,然后提交事务commit()

    <5>Hibernate 会根据配置文件hibernate.cfg.xml 中设置的生成表策略,数据库方言及jdbc 连接等配置。

    <6>根据Student.hbm.xml 设计表STUDENT,在数据库mysql2 下创建表STUDENT;

    <7>执行提交事务后方法save() 的直接结果就是在创建的表中存入了一条记录1,zhangsan,male

    <8>最后关闭session 及SessionFactory。

3.测试结果

    打开MySQL 的可视化软件,刷新数据库mysql2,发现该数据库下有新建表student ,查看其表设计,如下图:和*.hbm.xml 文件中配置一致。


图3-3-1.表STUDENT的表设计图


图3-3-2.表STUDENT 中的记录图

4.说明:

<1>生成表策略

    表STUDENT 是由Hibernate 环境支持创建,配置文件hibernate.cfg.xml 中配置的创建表策略为update

    update:当数据库存在此表时则更新表student;此表时不存在则创建表student。

    create:当前表不存在则创建表;若当前表若存在则先删除表,而后再创建。
<2>表结构设计

    表结构的设计就是*.hbm.xml 文件中的配置,可自定义修改相关属性及属性值。所以说model 类一般也对应了数据表。

<3>lib 文件下的jar 包

    此处是MySQL 的驱动包,用来连接MySQL,不同的数据库驱动包不一致。若不是MySQL 数据库且需修改hibernate.cfg.xml 文件中的数据库驱动Driver 等数据库相关参数。

<4>Hibernate 环境下的项目

    关键是配置文件hibernate.cfg.xml,Hibernate 的重要配置需在此文件中设置。且相关*.hbm.xml 需要在此文件中配置映射。

    项目需导入Hibernate 相关开发工具jar 包,此处在创建hibernate.cfg.xml 时已导入相关工具包。如图3-1-1中的Hibernate 4.1.4 Libraries



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niaonao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值