`
robinsoncrusoe
  • 浏览: 747111 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate简介

    博客分类:
  • JAVA
阅读更多
Hibernate简介

Hibernate寓意:Let Java objects hibernate in the relational database.
Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。简单的说就是:
1.封装了通过JDBC访问数据库操作。
2.向上层应用提供访问面向对象数据访问的API。

创建Hibernate配置文件
通过一个例子practice 演示如何运用Hibernate来访问关系数据库。
Practice 工程的功能:
通过Hibernate保存客户(customer)信息。
其Hibernate应用结构图如下:

―――――――――――――――――――――――――――
Practice 应用
Customer Class ; action Class;Business Class
――――――――――――――――――――――――――――


――――――――――――――――――――――――――――
Hibernate xml
对象-关系映射文件           Hibernate ApI
                             Hibernate 配置文件
――――――――――――――――――――――――――――


――――――――――――――――――――――――――――
关系数据库(Mysql)
CUSTOMERS 表
――――――――――――――――――――――――――――


创建持久化类
Hibernate 从Hibernate配置文件中读取和数据库连接相关的信息。
配置文件有两种形式:
一种是XML格式的文件:hibernate.cfg.xml
一种是Java属性文件:hibernate.properties
这个实例中我们将使用hibernate.cfg.xml。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="use_outer_join">false</property>
        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
        <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/netstore</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="connection.useUnicode">true</property>
        <property name="connection.characterEncoding">gb2312</property> 
        <mapping resource ="hbm/Customers.hbm.xml"/>
    </session-factory>
</hibernate-configuration>



插入位置在src目录下:

创建O/R对象-关系映射文件
创建持久化的类Customer.java

package entity;

import java.io.Serializable;

public class Customers implements Serializable {

        private Integer id;

        private String name;

        private int age;

        public Customers() {
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        public Integer getId() {
                return id;
        }

        public void setId(Integer id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
}



Get/set 方法的命名必须符合JavaBean的规范,否则Hibernate会报出异常,具体请参照相关资料。

关于Serializable接口:
Hibernate 并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不同的进程节点之间传输时,这个对象必须实现这个接口;如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象必须实现 Serializable接口。
关于不带参数的构造方法:

public Customers() {
        }



Hibernate要求持久化类必须提供一个不带参数的默认的构造方法,原因请参考相关资料。

创建Mysql数据库
数据库名称:netstroe

Customer表DDL定义如下:
CREATE TABLE `customers` (
  `Id` bigint(20) NOT NULL default '0',
  `name` varchar(15) default NULL,
  `age` int(11) default NULL,
  PRIMARY KEY  (`Id`)
) TYPE=MyISAM;



创建对象-关系映射文件
创建对象-关系映射文件:Customers.hbm.xml
代码如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
    
<hibernate-mapping>
<!-- 
    Created by the Middlegen Hibernate plugin

    http://boss.bekk.no/boss/middlegen/
    http://hibernate.sourceforge.net/
-->

<class 
    name="entity.Customers" 
    table="customers"
>

    <id
        name="id"
        type="java.lang.Integer"
        column="id"
    >
        <generator class="assigned" />
    </id>

    <property
        name="name"
        type="java.lang.String"
        column="name"
        length="15"
    />
    <property
        name="age"
        type="int"
        column="age"
        length="11"
    />
</class>
</hibernate-mapping>



引入Hibernate所需的jar包
Hibernate2.jar、hibernate-tools.jar

通过Hibernate API 访问MYSQL数据库
创建业务逻辑类:useHibernate.java
代码如下:

package business;

import entity.Customers;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;

public class useHibernate {
        public static SessionFactory sessionFactory;

        /** 初始化Hibernate,创建SessionFactory实例 */
        public void saveCustomers(Customers customers) throws Exception {
                Configuration config = null;
                config = new Configuration().configure();
                // 创建一个SessionFactory 实例
                sessionFactory = config.buildSessionFactory();
                Session session = sessionFactory.openSession();
                Transaction tx = null;
                try {
                        /* 开始一个事务 */
                        tx = session.beginTransaction();
                        session.save(customers);
                        /* 提交事务 */
                        tx.commit();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        if (tx != null)
                                tx.rollback();
                        throw e;
                } finally {
                        session.close();
                }
        }
}



测试Hibernate配置是否成功
创建Junit测试:testhibernate.java
有关Junit请参考相关资料:

package test;

import business.useHibernate;
import entity.Customers;
import junit.framework.TestCase;

public class testhibernate extends TestCase {
        public void testSaveCustomers() {
                Customers customers = new Customers();
                customers.setId(new Integer(330121));
                customers.setAge(24);
                customers.setName("huhpreal");
                useHibernate usehibernate = new useHibernate();
                try {
                        usehibernate.saveCustomers(customers);
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
}



查看后台打印信息:
(cfg.Environment                     403 ) Hibernate 2.0.3
(cfg.Environment                     432 ) hibernate.properties not found
(cfg.Environment                     452 ) using CGLIB reflection optimizer
(cfg.Environment                     462 ) JVM proxy support: true
(cfg.Configuration                   703 ) Configuration resource: /hibernate.cfg.xml
(cfg.Configuration                   270 ) Mapping resource: hbm/Customers.hbm.xml
(cfg.Binder                          178 ) Mapping class: entity.Customers -> customers
(cfg.Configuration                   885 ) Configured SessionFactory: null
(cfg.Configuration                   492 ) processing one-to-many association mappings
(cfg.Configuration                   503 ) processing foreign key constraints
(impl.SessionFactoryImpl             132 ) building session factory
(dialect.Dialect                     83  ) Using dialect: net.sf.hibernate.dialect.MySQLDialect
(connection.DriverManagerConnectionProvider 41  ) Hibernate connection pool size: 20
(connection.DriverManagerConnectionProvider 70  ) using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/netstore
(connection.DriverManagerConnectionProvider 71  ) connection properties: {useUnicode=true, user=root, password=123456, characterEncoding=gb2312}
(impl.SessionFactoryImpl             162 ) Use outer join fetching: false
(impl.SessionFactoryImpl             185 ) Use scrollable result sets: true
(impl.SessionFactoryImpl             186 ) JDBC 2 max batch size: 15
(impl.SessionFactoryImpl             194 ) echoing all SQL to stdout
(impl.SessionFactoryObjectFactory    82  ) no JDNI name configured
(impl.SessionFactoryImpl             269 ) Query language substitutions: {}
Hibernate: insert into customers (name, age, id) values (?, ?, ?)

Hibernate 配置使用成功

查看数据库:

插入成功!

分享到:
评论

相关推荐

    hibernate简介

    【hibernate简介】 Hibernate 是一个广泛应用于Java开发领域的开源对象关系映射(ORM)框架。它的出现旨在解决Java程序员在使用JDBC操作数据库时面临的繁琐低效问题,通过提供面向对象的API,使得开发者可以以更加...

    hibernate简介及特例

    【Hibernate简介及特性】 Hibernate是一个Java开发中的对象关系映射(ORM)框架,它提供了将数据库操作转化为面向对象的方式,让开发者可以更加便捷地进行数据持久化操作。Hibernate基于JDBC,但对JDBC进行了封装,...

    Hibernate简介与快速入门

    ### Hibernate简介与快速入门 #### 一、Hibernate概述 Hibernate是一种强大的开源对象关系映射(ORM)框架,它提供了一种高效的方式将面向对象的数据模型映射到关系型数据库的表结构中。Hibernate最初由Gavin King...

    [VIP][强化]J2EE第一期 Hibernate专题 第一讲 Hibernate简介源码

    【J2EE与Hibernate简介】 在Java企业级应用开发领域,J2EE(Java 2 Platform, Enterprise Edition)是一个标准的平台,它提供了一个统一的框架来构建分布式、多层的应用程序。J2EE涵盖了服务器端组件模型、数据库...

    hibernate简介及优缺点

    一.持久化:将内存中的瞬时态数据保存成数据库中持久态数据的操作 1.瞬时态:以new命令实例化后从未用session将其与数据库关联(保存)过的... 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化的桥梁

    Hibernate简介.doc

    **Hibernate 概述** Hibernate 是一个开放源代码的 Java 库,它提供了对象关系映射(ORM)解决方案,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层的 SQL 语句。ORM 解决了传统应用程序中面向对象...

    移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    hibernate知识简介.ppt

    5. **Hibernate简介** Hibernate 是最受欢迎的ORM框架之一,因其灵活性和高效性而备受青睐。它提供了丰富的API和配置选项,支持多种数据库,包括事务管理、第二级缓存等功能。由于其活跃的社区支持和持续的更新,...

    Hibernate入门到精通

    Hibernate 简介 Hibernate 是一个开源的Java Persistence Framework,它提供了一种对象关系映射的解决方案,帮助开发者轻松地访问和操作关系数据库。Hibernate 的主要特点是:支持多种数据库管理系统、提供了高效的...

    JAVA学习资料-Hibernate简介.doc

    **核心接口简介** 1. **Session接口**:Session是与数据库交互的主要接口,它负责执行持久化对象的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。由于Session不是线程安全的,所以在多线程...

    JAVA Hibernate 简介 ppt

    本人所有资源完全原创,此文可以作为新手入门之砖,也可以作为老人的茶余饭后。欢迎下载。联系我:shansun123@126.com

    hibernate权威整理文档!

    一、Hibernate简介 Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它致力于简化Java应用程序的持久层开发。通过Hibernate,开发者可以将Java对象映射到数据库表,从而实现对数据库的操作,而无需直接...

    教育移动商务应用软件开发第8章Hibernate简介及功能实现.ppt

    【教育】移动商务应用软件开发第8章主要探讨的是Hibernate框架在JavaEE环境下的应用,这是构建现代企业级移动商务应用程序的重要技术之一。本章旨在让学习者掌握使用Hibernate进行数据持久化的技能,以及理解软件...

    hibernate 重点知识原创

    一、hibernate 简介 Hibernate 是一个流行的 Java 应用程序框架,主要用于简化对象关系映射(ORM)的过程。它允许开发者使用面向对象的方式来操作数据库,通过自动映射数据库表为 Java 对象,从而避免了手动编写 ...

    基于hibernate的简单留言本

    【hibernate简介】 Hibernate是一个开源的Java框架,主要用于简化企业级应用中的对象关系映射(Object-Relational Mapping,ORM)。它允许开发者将数据库操作转换为对Java对象的操作,从而降低了开发人员处理SQL和...

    hibernate实现动态SQL查询

    一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。通过对象-关系映射(ORM),Hibernate可以自动将Java对象转化为数据库中的记录,并反之。这样,开发者无需编写大量...

    hibernate系列(一)hibernate入门

    Hibernate简介** Hibernate是由 Gavin King 创建的一个开源项目,它实现了JPA(Java Persistence API)规范,提供了一种在Java应用中持久化对象的机制。通过Hibernate,我们可以避免编写大量的SQL语句,而是通过...

Global site tag (gtag.js) - Google Analytics