Hibernate + jbosstools 整合、配置、测

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

文章相对比较早,有一些工具没有,或者版本不对,请给我留言,看到后会逐一回复。

一、前置条件

1.Eclipse 4.4.2

下载地址:Eclipse官网 download.eclipse.org/eclipse/dow…
Eclipse下载

查看Eclipse版本

2.hibernate-release-4.3.11.Final

下载地址:Hibernate官网 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官网 tools.jboss.org/downloads/j…
下载jbosstools-4.2.3.Final_2015-03-26_23-05-30-B264-updatesite-hibernatetools

4.mysql 5.6

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

5.common-logging.jar Hibernate内部记录日志jar包

下载地址:common-logging.jar download.csdn.net/detail/mimi…

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文件配置为如下格式。参数的作用各不相同,依据自己的喜好进行配置。如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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视图]
(img.blog.csdn.net/20150824173…)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
typescript复制代码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的对应关系

1
2
3
4
5
6
7
8
less复制代码@Entity
@Table(name="user")
public class User implements java.io.Serializable
{
@Id @Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
......(以下代码略去)
}

5) 生成的User.hbm.xml配置文件源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)的测试文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
java复制代码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的常规配置

1
2
3
4
5
6
7
ini复制代码<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>

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%