Hibernate 入门 基本配置

Posted Davis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate 入门 基本配置相关的知识,希望对你有一定的参考价值。

应用级别所以很粗浅 转载自:http://www.cnblogs.com/blackdeng/p/7026729.html

首先介绍一下hibernate框架:

1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架。

2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储

3.高度整合jdbc,简化了很多jdbc的操作。比如查询,比如存储

4.二级缓存。缓存一部分所查询的数据,方便随时调用,大大的减少了数据库查询。

5.ORM(Object/Rational Mapping)关系映射工具。对象关系映射把数据表的操作简化为对于对象的操作,让面向对象思维更加实际。

 

然后开始正式部署。部署之前首先调用jar包

 

除了以上的包还需要jdbc的所有包。这上面只是hibernate的包

(1)导入以上jar包

(2)在src下创建并编写Hibernate主配置文件 用于初始化hibernate需要用的信息。这个文件可以放在src下,也可以放在classes下。命名为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="connection.driver_class"></property>
        <!--数据库路径  -->
        <property name="connection.url"></property>
        <!--数据库用户名  -->
        <property name="connection.username"></property>
        <!--数据库密码  -->
        <property name="connection.password"></property>
        <!--方言,便于hibernate对象操作转化为合适的数据库语句  -->
        <property name="dialect">org.hibernate.dialect.mysqlDialect</property>
        <!--是否显示sql语句,sql一般会很难看  默认为false-->
        <property name="hibernate.show_sql">true</property>
        <!--下一个层级的映射文件,用来配置bean对象与数据表之间的关系  -->
        <mapping resource="com/dhh/pojo/Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
复制代码

 

 

(3)在某个目录下创建映射文件,这就是上一步提到的Person.hbm.xml。一般跟bean放在同一个目录下,接受hibernate.cfg.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    package="com.dhh.pojo">
    <!-- 类名对应表名 -->
    <class name="Person" table="person">
        <!-- 主键使用id标签。然后对应属性名与列名 -->
        <id name="id" type="int" column="id">
            <!-- 自增长主键不同数据库有不同类型的自增长类型,有需要可以百度到答案的 -->
            <generator class="identity"></generator>
        </id>
        <!-- 非主键映射关系,注意类型并不是单纯的java类型也不是数据库类型,而是一种中间类型,注意大小写特别是String在这里开头要小写 -->
        <property name="name" type="string" column="name"></property>
        <property name="age" type="int" column="age"></property>
        <property name="address" type="string" column="address"></property>
    </class>
</hibernate-mapping>
复制代码

 上面所说的主键自增长类型可参考下表

 

中间类型参考下表

 

 

 

(4)运行方式。

  

复制代码
package com.dhh.Util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Util {
    public static Configuration cfg;
    public static SessionFactory sessionFactory;
    static{
        //启动原本设定好的配置管理文件
        cfg=new Configuration().configure();
        //建立会话工厂用来产生会话,工厂可以只有一个
        sessionFactory=cfg.buildSessionFactory();
    }
    public static Session openSesson(){
        return sessionFactory.openSession();
    }
public static Transaction beginTransaction(Session session){ return session.beginTransaction(); } }
复制代码

下面介绍一下一上的类与接口。

1)Configuration类

Configuration 类负责读取主配置文件的信息。包括如下内容:

Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。

持久化类与数据表的映射关系(*.hbm.xml 文件)

加载Xml文件(hibernate.cfg.xml)创建对象方式

Configuration cfg = new Configuration().configure();

 

2)SessionFactory接口

Configuration对象根据当前的配置信息生成 SessionFactory 对象,因此SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存。

获取SessionFactory的方式:

   Configuration cfg = new Configuration().configure();

   SessionFactory sf = cfg.buildSessionFactory();

SessionFactory作用:是生成Session的工厂

    Session session = sf.openSession();

 

Session接口

Session接口:是应用程序与数据库之间交互操作的核心对象,是 Hibernate 运作的中心,所有持久化对象(javabean)必须在 session 的管理下才可以进行持久化(更新数据库)操作。

获取Session对象的方式:

Session session  = sessionFactory.openSession();

Session的主要方法简介:

取得持久化对象的方法: get() load()

持久化对象保存,更新和删除:save(),update(),saveOrUpdate(),delete()

开启事务: beginTransaction().

管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等

 

 

4)Transaction接口

 

代表一次数据库访问的最小操作,具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。

 

获取Transaction对象的方式:

 

  Transaction tx =session.beginTransaction();

 

常用方法:

 

commit():提交相关联的session实例

 

rollback():撤销事务操作

 

wasCommitted():检查事务是否提交

 

 

5)Query接口

 

Query接口 :封装数据库查询的返回结果(hql的查询方式)

 

获取Query对象的方式:

 

 Query query = session.createQuery(“hql");

 

常用方法

 

Iterator():获取查询结果的迭代器对象(只查询主键,返回)

 

list():以集合的方式获取查询结果

 

 

 

 

(5)执行原理与流程

a、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,

b、并用这些信息生成一个SessionFactory对象,

c、然后从SessionFactory对象生成一个Session对象,

d、并用Session对象生成Transaction对象;

e、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()、createQuery()等方法对进行CURD等操作;

f、提交事物。

 

以上是关于Hibernate 入门 基本配置的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate入门配置案例

hibernate多对多 一对多 及简单入门

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

hibernate入门

《Java从入门到放弃》入门篇:hibernate基本用法