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 文件即设计表结构)来创建对应的数据表。

    代码如下:

  1. package cn.edu.hpu.model;  
  2.   
  3. public class Student {  
  4.     private Integer id;  
  5.     private String name;  
  6.     private String gender;  
  7.     public Integer getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(Integer id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.     public String getGender() {  
  20.         return gender;  
  21.     }  
  22.     public void setGender(String gender) {  
  23.         this.gender = gender;  
  24.     }  
  25.     @Override  
  26.     public String toString() {  
  27.         return “Student [id=” + id + “, name=” + name + “, gender=” + gender  
  28.                 + ”]”;  
  29.     }  
  30.     public Student(Integer id, String name, String gender) {  
  31.         super();  
  32.         this.id = id;  
  33.         this.name = name;  
  34.         this.gender = gender;  
  35.     }  
  36.       
  37.     public Student() {  
  38.         // TODO Auto-generated constructor stub  
  39.     }  
  40. }  
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

    代码如下:

  1. <?xml version=“1.0”?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC ”-//Hibernate/Hibernate Mapping DTD 3.0//EN”  
  3. “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>  
  4.   
  5. <hibernate-mapping package=“cn.edu.hpu.model”>  
  6.     <class name=“Student” table=“STUDENT” dynamic-insert=“true”>  
  7.         <id name=“id” type=“java.lang.Integer”>  
  8.             <column name=“ID” />  
  9.             <generator class=“native” /><!– 指定主键的生成方式, native: 使用数据库本地方式 –>  
  10.         </id>  
  11.         <property name=“name” type=“java.lang.String” not-null=“true”>  
  12.             <column name=“NAME”></column>  
  13.         </property>  
  14.         <property name=“gender” type=“java.lang.String”>  
  15.             <column name=“GENDER” />  
  16.         </property>  
  17.   
  18.     </class>  
  19. </hibernate-mapping>  
<?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 来管理相关数据。

    配置文件代码如下:

  1. <?xml version=‘1.0’ encoding=‘UTF-8’?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           ”-//Hibernate/Hibernate Configuration DTD 3.0//EN”  
  4.           “http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”>  
  5. <!– Generated by MyEclipse Hibernate Tools.                   –>  
  6. <hibernate-configuration>  
  7.   
  8. <session-factory>  
  9.   
  10.     <property name=“hbm2ddl.auto”>update</property><!– 设置生成表策略 –>  
  11.   
  12.     <!– 设置本地数据库方言 –>  
  13.     <property name=“dialect”>  
  14.         org.hibernate.dialect.MySQLDialect  
  15.     </property>  
  16.   
  17.     <property name=“connection.url”>  
  18.         jdbc:mysql://localhost:3306/mysql2  
  19.     </property>  
  20.     <property name=“connection.username”>root</property>  
  21.     <property name=“connection.password”>739150</property>  
  22.     <property name=“connection.driver_class”>  
  23.         com.mysql.jdbc.Driver  
  24.     </property>  
  25.   
  26.     <property name=“format_sql”>true</property><!– 格式化良好的sql 语句 –>  
  27.     <property name=“show_sql”>true</property><!– 在控制台显示hql 语句 –>  
  28.   
  29.     <!– 配置映射*.hbm.xml –>  
  30.     <mapping resource=“cn/edu/hpu/model/Student.hbm.xml” />  
  31.   
  32. </session-factory>  
  33.   
  34. </hibernate-configuration>  
<?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 包支持)

    代码如下:

  1. package cn.edu.hpu.test;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.Transaction;  
  6. import org.hibernate.cfg.Configuration;  
  7. import org.hibernate.service.ServiceRegistry;  
  8. import org.hibernate.service.ServiceRegistryBuilder;  
  9. import org.junit.Test;  
  10.   
  11. import cn.edu.hpu.model.Student;  
  12.   
  13. public class HbmTest {  
  14.   
  15.     @Test  
  16.     public void test(){}  
  17.     /** 
  18.      * 测试hibernate 本地数据库连接 
  19.      * 方法功能: 
  20.      *      通过生成表策略创建或更新表,实例化一个student 对象。 
  21.      *      并插入一条对应该student 对象的记录到数据表中。 
  22.      */  
  23.     @Test  
  24.     public void testSave(){  
  25.         SessionFactory sessionFactory = null;  
  26.           
  27.         //创建一个Configuration对象:对应hbm的基本配置信息和关系映射信息  
  28.         Configuration configuration = new Configuration().configure();  
  29.           
  30.         //创建ServiceRegistry对象,用于注册hbm的配置信息  
  31.         ServiceRegistry serviceRegistry =   
  32.                 new ServiceRegistryBuilder().applySettings(configuration.getProperties())  
  33.                                             .buildServiceRegistry();  
  34.         sessionFactory = configuration.buildSessionFactory(serviceRegistry);  
  35.           
  36.         Session session = sessionFactory.openSession();//1.创建Session 对象  
  37.         Transaction trans = session.beginTransaction();//2.创建Transaction 对象  
  38.           
  39.         Student student = new Student(1,“zhangsan”,“male”);//3.实例化一个对象  
  40.         session.save(student);  
  41.           
  42.         trans.commit();//4.提交事务  
  43.         session.close();  
  44.         sessionFactory.close();//5.关闭Session 和SessionFactory  
  45.     }  
  46. }  
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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值