Hibernate + jbosstools 整合、配置、测试详解

PS:文中用的都是Eclipse配置中对应的英文提示,防止配置时找不到入口。

一、前置条件
1.Eclipse 4.4.2
下载地址:Eclipse官网 http://download.eclipse.org/eclipse/downloads/
Eclipse下载

查看Eclipse版本

2.hibernate-release-4.3.11.Final
下载地址:Hibernate官网 http://hibernate.org/orm/
下载hibernate-release-4.3.11.Final的界面

3.jbosstools-4.2.3.Final_2015-03-26_23-05-30-B264-updatesite-hibernatetools
下载地址:jbosstools官网 http://tools.jboss.org/downloads/jbosstools/luna/4.2.3.Final.html
下载jbosstools-4.2.3.Final_2015-03-26_23-05-30-B264-updatesite-hibernatetools

4.mysql 5.6
下载地址:mysql官网 http://www.mysql.com/
下载mysql 5.6

5.common-logging.jar Hibernate内部记录日志jar包
下载地址:common-logging.jar http://download.csdn.net/detail/mimica/9035949

6.mysql-connector-java-5.1.7
下载地址:mysql-connector-java-5.1.7.zip

7.Navicat for mysql 10.1.7 企业版
下载地址:暂不提供,网上搜索即可,最好是破解版的,方便操作,其他的mysql数据库操作客户端亦可,根据个人喜好。

二、安装
1.Eclipse 4.4.2直接解压即可。
2.可先将hibernate-release-4.3.11.Final解压至Eclipse 4.4.2的plugins目录,为后面导入库做准备。
3.打开Eclipse的软件安装界面,如下所示(按照提示进行安装):
Eclipse安装新软件
3.5 Eclipse安装离线jbosstools-4.2.3.Final.zip

三、使用Hibernate操作mysql数据库表结构
1.创建测试数据库test(略)。
2.创建测试表结构user/news,暂不需要插入任何数据(略)。
3.新建Java project工程,如下所示:
新建Java project工程1
新建Java project工程2

4.新建User Libraries
新建User Libraries1
新建User Libraries2

5.给Java project添加User Libraries,如下所示:
给工程添加User Library
添加User Library
选择在系统的Prefenrence中配置好的User Library
添加完相应的User Libraries
添加完User Libraries后的状态

6.创建Hibernate配置文件,使用默认hibernate.cfg.xml
创建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>
  <!-- <property name="hibernate.connection.datasource">java:comp/env/jdbc/dstest</property> -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
  <property name="hibernate.connection.username">[你登录mysql数据库的用户名]</property>
  <property name="hibernate.connection.password">[你登录mysql数据库的密码]</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <property name="hibernate.c3p0.max_size">200</property>
  <property name="hibernate.c3p0.min_size">2</property>
  <property name="hibernate.c3p0.timeout">1800</property>
  <property name="hibernate.c3p0.max_statements">50</property>

  <mapping resource="db/dao/News.hbm.xml"></mapping>
  <mapping resource="db/dao/User.hbm.xml"></mapping>
 </session-factory>
</hibernate-configuration>

7.配置Hibernate configuration
启动hibernate configuration视图
配置hibernate.cfg.xml文件
配置hibernate.cfg.xml文件完成

8.新建Hibernate 逆向POJO实体类的反向配置文件
新建Hibernate 逆向POJO实体类的反向配置文件

9.新建Hibernate Configuration properties添加当前工程的Console Configuration文件
1) 找到显示Hibernate Configuration视图的选项
找到显示Hibernate Configuration视图的选项

2) 输入关键字选择Hibernate Configuration视图
输入关键字选择Hibernate Configuration视图

3) 显示Hibernate Configuration视图
显示Hibernate Configuration视图]![这里写图片描述

4) Hibernate Configuration properties添加当前工程的Console Configuration文件
Hibernate Configuration properties添加当前工程的Console Configuration文件

5) 新建成功的反向工程配置文件
新建成功的反向工程配置文件

10.新增需要反向的工程
1) 选择刚才的反向配置文件的configuration properties文件
新建成功的hibernate.reveng.xml文件选择hibernate工程

2) 添加需要反向的表结构
添加需要反向的表结构
这里写图片描述

3) 填写反向表结构的信息
填写反向表结构对应的类名
生成反向类名配置文件源码

11.生成反向类文件(如果类文件提示错误,请查看包名是否有错)
注:如果工具栏里没有显示这个按钮,可以 window -> Customize Perspective,切换到Command Groups Availablity标签页,把Hibernate Code Generation给勾选上
1) 设置Hibernate code Generation Configurations配置信息->Main
设置Hibernate code Generation Configurations配置信息

2) 设置Hibernate code Generation Configurations配置信息->Exporters
设置Hibernate code Generation Configurations配置信息

3) 设置Hibernate code Generation Configurations配置信息->Refresh
设置Hibernate code Generation Configurations配置信息

4) 生成的类文件
生成的类文件

12.生成映射文件
1) 生成映射文件
生成映射文件

2) 点击下一步
Create Hibernate XML Mapping file(s)

3) 下一步
Create Hibernate XML Mapping file(s)

4) 已经生成映射配置文件User.hbm.xml
已经生成映射配置文件User.hbm.xml

package db.dao;

// default package
// Generated 2015-8-24 18:39:26 by Hibernate Tools 4.3.1

/**
 * User generated by hbm2java
 */
public class User implements java.io.Serializable {

    private Integer id;
    private String name;

    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    public Integer getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

添加如下代码,完成POJO的对应关系

@Entity
@Table(name="user")
public class User implements java.io.Serializable 
{
    @Id @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    ......(以下代码略去)
}

5) 生成的User.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">
<!-- Generated 2015-8-24 18:49:15 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="db.dao.User" table="USER">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
    </class>
</hibernate-mapping>

13.添加类映射配置文件User.hbm.xml
添加类映射配置文件User.hbm.xml
添加映射类配置文件OK

五、测试POJO类
1.新建User.java(POJO)的测试文件
新建User.java(POJO)的测试文件

2.编写User.java(POJO)的测试文件

package db.dao;

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;

public class UserMgr {

    public static void main(String[] args) 
    {
        // Configuation实例代表了应用程序到SQL数据库的配置信息
        // 加载默认的hibernate.cfg.xml文件,若设置config()中的参数,则表示加载其他的配置文件
        Configuration conf = new Configuration().configure();

        @SuppressWarnings("deprecation")
        ServiceRegistry serviceReg = new ServiceRegistryBuilder()
                .applySettings(conf.getProperties()).buildServiceRegistry();

        // 以Configuration实例创建不可变SessionFactory实例
        SessionFactory sessionFac = conf.buildSessionFactory(serviceReg);

        // 创建Session
        Session session = sessionFac.openSession();

        // 开始事务
        Transaction trans = session.beginTransaction();

        // 创建消息对象
        User user = new User();

        user.setName("测试用户名1");

        // 保存信息
        session.save(user);

        // 提交事务
        trans.commit();

        // 关闭session
        session.close();
        sessionFac.close();
    }
}

3.依据Eclipse开启调试即可。
调试UserMgr.java

4.查看数据库是否已经插入对应的数据。
连接数据库成功等一系列信息
数据写入的SQL自动生成

六、常见问题
1.Error parsing JNDI name []
请配置JNDI配置信息(如果没有配置则删除hibernate.cfg.xml中的name=”“属性)

2.映射文件/资源找不到
在hibernate.cfg.xml中添加如下对应的属性,这里是指配置文件的相对路径。

3.ids for this class must be manually assigned before calling save(): db.dao.User
如果id字段在UserMgr.hbm.xml文件中被设置为assigned同时在数据库又是自增字段时,可以尝试手动通过setter设置字段值。
这里写图片描述

4.数据写入成功后为??????的解决方案
数据写入成功后为??????
在hibernate.cfg.xml文件中添加如下配置:
?useUnicode=true&characterEncoding=UTF-8
这里写图片描述

5.hibernate.cfg.xml中c3p0的常规配置

<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">true</property>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值