阅读 222

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

<?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

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>


作者:CodeCaptain
链接:https://juejin.cn/post/7031713660825403422


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐