如何配置hibernate框架

原创 2017年01月03日 20:12:38

在做java开发时,经常会与数据库打交道,原始的做法是使用JDBC与数据库连接,大多数人厌倦了写繁杂的sql语句,而且JDBC不符合面向对象的思想,对于开发人员来说,与数据库打交道成为了一件麻烦事。

然而hibernate的使用,简化了我们使用数据库,也符合面向对象思想。因此,hibernate很快便普及到来大多数的项目中来。

因此,我需要更深的巩固一下hibernate的用法,先从它的配置开始。

我们要生成一个周报表,实体类为ReportEntity,包括id,标题title,时间time,内容content这些字段。

首先先了解一下每个文件的大概位置,如下图所示:

配置hibernate大概需要四步:

1、hibernate所需要的jar包,当然,与数据库打交道也必须包括数据库驱动的jar包。

2、创建hibernate的配置文件,主要配置了数据库的驱动,数据库的url,数据库的用户名密码,数据库方言,以及一些数据库表的生成策略,控制台的打印,sql格式化等配置。也包括实体类的映射文件ReportEntity.hbm.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.username">root</property>
    	<property name="hibernate.connection.password">root</property>
    	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    	<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
    	
    	<!-- 配置hibernate基本信息 -->
    	<!-- hibernate所使用的数据库方言 -->
    	<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    	<!-- 执行操作时是否打印sql -->
    	<property name="hibernate.show_sql">true</property>
    	<!-- 是否对sql进行格式化 -->
    	<property name="hibernate.format_sql">true</property>
    	
    	<!-- 指定自动生成数据库表的策略 -->
    	<property name="hbm2ddl.auto">update</property>
    	
    	<!-- 指定关联的.hbm.xml -->
    	<mapping resource="com/cc/entity/ReportEntity.hbm.xml"/>
    	
    </session-factory>
</hibernate-configuration>

3、创建持久化类,这里是ReportEntity.java。

ReportEntity.java

package com.cc.entity;

import java.sql.Timestamp;

public class ReportEntity {
	private Integer id;
	private String title;
	private Timestamp time;
	private String content;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public Timestamp getTime() {
		return time;
	}
	public void setTime(Timestamp time) {
		this.time = time;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
}

4、创建映射文件,ReportEntity.hbm.xml。

ReportEntity.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 2016-12-11 16:01:37 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.cc.entity.ReportEntity" table="REPORTENTITY">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <!-- 指定主键生成方式,native使用数据库本地的方式 -->
            <generator class="native" />
        </id>
        
        <property name="title" type="java.lang.String">
            <column name="TITLE" />
        </property>
        <property name="time" type="java.sql.Timestamp">
            <column name="TIME" />
        </property>
        <property name="content" type="java.lang.String">
            <column name="CONTENT" />
        </property>
    </class>
</hibernate-mapping>

5、使用hibernate的API去操作数据库。

虽然我们创建的是Web项目,但是这里我们创建一个main方法去操作数据库。

ReportEntity.java

package com.cc.entity;

import java.sql.Timestamp;
import java.util.Date;

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 ReportEntityTest {

	public static void main(String[] args) {
		//初始化SessionFactory,session工厂,
		SessionFactory sessionFactory = null;
		//读取创建的配置文件,hibernate.cfg.xml
		Configuration configuration = new Configuration().configure();
		//服务的注册器,hibernate的配置和服务需要在该对象中注册后才能有效
		ServiceRegistry serviceRegistry = 
				new ServiceRegistryBuilder().applySettings(configuration.getProperties())
				.buildServiceRegistry();
		//取得sessionFactory
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		//创建session
		Session session = sessionFactory.openSession();
		//开启事务
		Transaction transaction = session.beginTransaction();
		//直接创建ReportEntity对象,并对属性赋值
		ReportEntity report = new ReportEntity();
		Date date = new Date();
		Timestamp time = new Timestamp(date.getTime());
		report.setTitle("王小杰的报告");
		report.setContent("什么都没有");
		report.setTime(time);
		//执行保存操作
		session.save(report);
		//提交事务
		transaction.commit();
		//关闭session
		session.close();
		//关闭sessionFactory
		sessionFactory.close();
	}

}
这样hibernate就配置好了,最初的时候,配置hibernate往往会出现很多错误。在这里总结一下我经历过的一些错误。

1、hibernate.cfg.xml文件中hibernate.connection.url属性错误,本文章使用了简写,完整的url应该是 jdbc:mysql://localhost:3306/hibernate,其中localhost表示mysql服务器名称,这里是本地,包括127.0.0.1也表示本地,3306表示mysql使用的端口号,hibernate为数据库名

2、hibernate.cfg.xml文件中未指定.hbm.xml映射文件。该映射文件路径不是使用包名,而是使用了路径的方式。

3、数据库驱动路径也与数据库有关,使用数据库不同或者版本不同,皆有可能导致路径错误。

4、忘记生成实体类中属性的getter,setter方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【hibernate框架】如何配置联合主键-XML与Annotation样例剖析

首先看看什么是联合主键: 联合主键一般以表中的两个或两个以上的元素作为主键。 一般的联合主键,在数据库中设置就可以了。但是,如果你想用hibernate对主键做映射的话,则需要用面向对象的...

初学Hibernate框架之环境配置和测试

想学习一下使用SSH框架做一个简单的网站开发,所以决定从与数据库最相关的Hibernate开始学起。学习参考的主要是:Hibernate 入门教程(纯Eclipse版)。在这里记录一下学习的步骤和其中...

SSH:Hibernate框架(七种关联关系映射及配置详解)

概念          基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用。   分类 ...

Hibernate框架中在.hbm.xml映射文件中配置表与表之间的关联关系

1.Hibernate中关联关系可以分为: 单向关系:只能一张表指向另一张表。 双向关系:表与表之间可以互相指向。 2.根据关联的表的不同可以分为: 1对1关系 1对多关系 多...
  • HLoach
  • HLoach
  • 2017年03月12日 22:14
  • 1871

Spring配置Hibernate框架事务

原文:http://www.iteye.com/topic/1123347 Spring配置文件中关于事务配置总是由三个组成部分,DataSource、TransactionManage...
  • pwc1996
  • pwc1996
  • 2015年09月13日 17:03
  • 247

Hibernate框架学习之三:深入映射文件的配置

前言这里主要是对XML版的Hibernate框架的开发进行说明,Annotation版会在另外的文章中在说明。由于Hibernate是一个全方位的ORM框架,那么要实现从Object到Record的完...

SSH:Hibernate框架(关系映射及基本配置)

这篇博客小编介绍Hibernate的经典内容:对象关系映射。主要介绍映射的基本概念,映射的分类,映射文件。   概念          ORM(Object Relational Mapping...

SSH:Hibernate框架(配置文件详解)

初学hibernate的童鞋,刚开应该都有这种感觉,hibernate的配置文件好麻烦,还不如jdbc访问数据库呢,直接写代码,多方便,用hibernate还要写代码,还要写配置,太麻烦了。至少我刚开...

不使用Maven的情况下,搭建Spring+Struts+Hibernate框架 - jar包与配置文件

Spring+Struts+Hibernate被简称为SSH,是Java EE开发中比较流行的开发框架组合,很够方便快速的让你开发出你想要的网站。Spring负责解耦,主要是通过控制反转来实现。Str...

Spring+Hibernate框架下MySql读写分离,主从数据库配置

介绍下mysql数据库读写分离在spring,hibernate框架下的配置。 1.mysql连接配置文件jdbc.properties  master.*.*表示主数据库连接参数,负责增,删,改...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何配置hibernate框架
举报原因:
原因补充:

(最多只允许输入30个字)