注:本文只是本人的个人理解,仅供参考,由于刚刚开始学hibernate框架,里面如果纰漏,还请网友多多指点。
我采用的是MyEclipse进行Web开发的。
此次,我打算是将struts2与hibernate整合开发,说是整合,也就是将连接数据库的部分用hibernate操作而已。
进入正题。。。
在MyEclipse中提供有struts2、hibernate、spring框架,你可以直接用里面的框架进行编译项目。具体的就靠自己慢慢摸索了(提示一下:MyEclipse->Project Capablities->…里面就包含有Myeclipse提供的框架的jar包)。当我们将框架jar包添加进去之后,如果希望进行删除、修改,那么可以直接在builder
path下面进行修改(如果jar包添加在lib目录下面,可以直接在里面删除),但是这样的修改会造成一个问题:当我们通过MyEclipse添加jar包的时候,他会将jar包的一些信息存储到项目文件中,如果我们删除了jar包,那些信息并未删除,当你再想通过Myeclipse添加框架的jar文件的时候,就无法添加。。。那么我们可以采取以下办法解决(假设当前所在的路径为项目的根路径,也就是src所在的路径):1、删除.myhibernatedata文件;2、用记事本打开.project文件,然后删除<buildSpec>元素下hibernate的配置,以及<natrures>下面的hibernate配置。
那么我们手工添加的时候需要添加些什么呢,这个还是一个遗留问题,我在官方网站下载hibernate的jar包后,将其复制到lib目录下面,并且将其所需要的辅助jar包也放到lib目录下,但是一直出现问题,由于刚刚开始学习hibernate,此问题暂时遗留,希望知道的朋友还请多多指点。
下面进入正题
下面是后台处理的java文件的UML类图。
Struts2的配置就不用说了,直接看hibernate的核心部分:
如果希望利用hibernate框架操纵数据库,跟我们平常操纵数据库一样,需要以下一些东西:
1、 数据库文件
2、 驱动文件
3、 数据库操作
那么我们就围绕着这两个条件看看hibernate是如何将其封装的:
首先要了解一个很重要的类:
SessionFactory,它是用来管理所有的会话的(所谓的会话就是当我们访问页面的时候,通过页面与服务器进行信息交流,这就称为一次会话),通常情况下一个项目只有一个会话工厂来管理所有的会话。所以它只需要初始化一次,那么根据这个特性,我们就应该将其设置为static变量。
它的初始化需要Configuration这个类来生成该工厂,那么这个类就是实现了数据库的配置连接,并且将我们建立的模型(此处的模型也就是一个javaBean,例如一个Person类,有姓名、年龄等属性,它就可以成为一个模型)与数据库中的数据表进行映射关联(此处的关联或许也就是一个Map而已),也就是这个类将我们的配置信息(数据库文件、驱动、用户名、密码等信息)进行解析,默认是去解析hibernate.cfg.xml文件,然后去进行数据库连接。
所有的配置文件都直接放在src目录下。
首先看一下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>
<!-- 连接的URL -->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<!-- 登录数据库的用户名 -->
<property name="connection.username">root</property>
<!-- 登录数据库的密码 -->
<property name="connection.password">wlzjdm</property>
<!-- 连接数据库的驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 采用的会话方言,也就是告诉hibernate此次连接的是什么数据库,采用哪种数据库语言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 是否打印hibernate自动生成的SQL语句,为了方便测试,此处设置为true,当我们部署的时候应该设置为false -->
<property name="show_sql">true</property>
<!-- 模型与数据库表的关联配置 -->
<mapping resource="User.hbm.xml" />
</session-factory>
</hibernate-configuration>
+++++++++++++++++++++++++++++++++++User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="dong.hibernate.model.User" table="user">
<id name="id" type="int">
<generator class="increment"></generator>
</id>
<property name="username" column="username" type="string"/>
<property name="password" column="password" type="string"/>
<property name="email" column="email" type="string"/>
<property name="age" column="age" type="integer"/>
</class>
</hibernate-mapping>
下面我们就看一下初始化SessionFactory以及Session建立、释放的处理类:
package dong.hibernate.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* 数据库的辅助类,实现了会话工厂的初始化,实现了一个会话的建立、关闭
*
* @author HS
*
*/
public class HibernateUtil
{
/**
* 会话工厂,通常来说,当服务器启动之后,会话工厂只有一个,它对应于一个数据库的配置文件,默认的命名为hibernate.cfg.xml,它
* 将数据源与hibernate进行关联。
*/
private static SessionFactory sessionFactory;
/**
* 当该类加载的时候就应该初始化会话工厂
*/
static
{
try
{
sessionFactory = new Configuration().configure()
.buildSessionFactory();
}
catch (HibernateException he)
{
he.printStackTrace();
}
}
/**
* 打开一个会话,例如当一个网页访问一个action,而action需要进行数据库操作的时候,它就会请求DAO新建一个会话,然后 间接操纵数据库。
*
* @return 返回建立的会话
* @throws HibernateException
*/
public static Session openSession() throws HibernateException
{
return sessionFactory.openSession();
}
/**
* 关闭当前会话,当会话完成之后应该将其关闭,否则会浪费系统资源,使得系统越来越慢
*
* @param session
* 要关闭的会话
* @throws HibernateException
*/
public static void closeSession(Session session) throws HibernateException
{
if (session != null)
{
session.close();
}
}
}
那么当我们了解完生成一次会话的方法之后,下面重点看一下会话(Session)的内容:
Session就是java应用和hibernate之间的一个桥梁,通过Session可以讲java对对象的操作(增删改查)传递给hibernate框架,让hibernate去转换会对数据库的操作。
(SQL:INSERT)增加数据的方法:save(), persist()
(SQL:DELETE)删除数据的方法:delete()
(SQL:UPDATE)更新数据的方法:update() or merge()
下面就看一下处理代码吧:
package dong.hibernate.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import dong.hibernate.dao.UserDAO;
import dong.hibernate.model.User;
import dong.hibernate.util.HibernateUtil;
/**
* DAO层的一个实现类,针对mysql类型的数据库进行操作
*
* @author HS
*
*/
public class UserDAOImpl implements UserDAO
{
@Override
public boolean add(User user)
{
Session session = null;
Transaction tx = null;
try
{
session = HibernateUtil.openSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
return true;
}
catch (HibernateException he)
{
tx.rollback();
he.printStackTrace();
return false;
}
finally
{
System.out.println("execute");
HibernateUtil.closeSession(session);
}
}
}
至此就完成了一个对数据的增加操作。剩下的就是自己采用传统的方式进行测试了,测试内容就不写了。。。
看完后,我们容易理解:
1、 数据库文件跟以前一样就是你的计算机上安装的数据库了
2、 连接数据库时需要的参数信息,也就是hibernate.cfg.xml文件中的内容了
3、 数据库的操作,这个也就是我们平常对对象的操作,然后将操作传递给hibernate,让hibernate转换为对数据库的操作。
还有一个很重要的类就是Transaction,这个类中的方法是用来实现将session的请求提交的。如果我们仅仅通过Session进行save操作的话,并不会将内容添加到数据库中。具体使用参考官方文档。。。
分享到:
相关推荐
这篇文章将带你初识Hibernate 3.6,了解其基本概念、配置以及如何进行简单的数据操作。 1. **对象关系映射(ORM)**:ORM 是一种编程技术,用于将关系数据库的数据映射到面向对象的模型中。通过ORM,开发人员可以...
二、初识Hibernate 1. Hibernate环境搭建 要开始使用Hibernate,首先需要下载Hibernate的开发包(如3.6.10版本)以及相关的依赖库,包括Slf4j和Log4j。将必要的jar包添加到项目构建路径中,包括Hibernate核心库、...
《初识Hibernate源码》是针对Java开发人员深入理解Hibernate框架的一款学习资源。Hibernate作为一款强大的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者能够以面向对象的方式处理数据。源码分析有...
《Hibernate Tools 4.1.1:提升数据库与对象映射的效率》 Hibernate Tools是...无论你是初识Hibernate的新手还是经验丰富的老手,这个工具都能为你的开发工作带来实质性的帮助,降低项目复杂度,提升开发速度。
《初识Hibernate:针对Hibernate 5的指南》(第四版)是专为深入理解Hibernate ORM框架而编写的一本详尽教程。这本书不仅提供了全面的理论知识,还包含了配套的源代码,使得读者能够通过实践更好地掌握Hibernate的...
总之,《深入浅出Hibernate》是一本全面而深入的Hibernate教程,它将带领读者从初识Hibernate到精通使用,是Java开发者的宝贵学习资料。通过阅读本书,你将能够熟练掌握Hibernate框架,提升数据库操作的效率,更好地...
《初识Hibernate:从新手到专业》是一本深入浅出介绍Hibernate框架的书籍,适合对Java编程有一定基础但对Hibernate不熟悉的读者。Hibernate是Java领域中广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库...
- "hibernate_day02_pm.zip"可能包含了初识Hibernate的基础知识,如环境搭建、基本操作等。 - "hibernate_day03_pm.zip"可能涉及到SessionFactory和Session的使用,以及实体类的创建。 - "hibernate_day04_pm.zip...
总体而言,《Hibernate - 符合Java习惯的关系数据库持久化》为Java后端开发人员提供了一套全面的指南,涵盖了从初识Hibernate到高级特性的所有关键点,对于希望掌握和使用Hibernate进行数据库操作的开发者来说,是一...
1. **初识Hibernate**:这部分介绍Hibernate的基本概念,包括它在Java应用程序中的作用,以及如何通过配置文件(如hibernate.cfg.xml)来设置数据源和连接参数。文档可能还涉及了SessionFactory和Session的创建与...
一、引言与初识Hibernate 1. **引言**:本手册旨在提供Hibernate框架的全面指南,适合初学者和有经验的开发者使用。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序与数据库交互。 2. **第一部分...
**标题:“Hibernate之API初识及增删改查实现案例hibernate003”** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,提供了对象关系映射(ORM)功能,使得开发者可以使用面向对象的方式来...
《初识Hibernate:深入浅出的Java ORM框架指南》 Hibernate是Java开发中广泛使用的对象关系映射(ORM)框架,它为Java开发者提供了一种高效、便捷的方式来管理数据库操作,将复杂的SQL语句和数据库交互转化为面向...
本章节主要介绍了初识Hibernate框架的相关知识点。 1. Hibernate框架简介 Hibernate是一个对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。它通过XML配置文件或注解将Java类与数据库表...
《Hibernate入门:初识与实践》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。...
**初识Hibernate示例** 在`hibernate-examples-master`这个项目中,可以看到一系列关于Hibernate基础操作的示例。这些示例可能包括了实体类的定义、配置文件的设置、以及如何在Java代码中进行CRUD操作的演示。通过...