`
wangpan80
  • 浏览: 108839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Hibernate】简介信息

阅读更多

       Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 

 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;
  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 <chsdate month="12" islunardate="False" day="30" year="1899" w:st="on" isrocdate="False"></chsdate>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 配置使用成功
  
  查看数据库:
  
  插入成功!

分享到:
评论

相关推荐

    hibernate简介及特例

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

    Hibernate入门到精通

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

    Hibernate简介与快速入门

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

    hibernate权威整理文档!

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

    Struts Hibernate Spring 三个框架简介

    Struts的工作流程通常是:用户发起请求,控制器Servlet根据请求信息和配置文件选择合适的Action,Action执行并返回结果,结果再由控制器转发到对应的JSP页面进行渲染展示。 **Hibernate框架** Hibernate是一个强大...

    Hibernate配置文件加载后修改配置信息

    ### Hibernate配置文件加载后修改配置信息 在Java开发过程中,特别是在使用ORM框架如Hibernate时,开发者经常需要对配置文件中的数据库连接信息进行动态修改或加密处理。本文将详细介绍如何利用反射机制来修改已经...

    hibernate框架学习,由浅入深

    1. Hibernate 框架简介 Hibernate 是一个开源的对象关系映射(O/R)工具,用于解决 Java 应用程序中的数据访问问题。它提供了一种实现 O/R 映射的框架,管理该项目的组织是 JBoss。 2. Hibernate 的历史 ...

    hibernate 重点知识原创

    配置文件 `hibernate.cfg.xml` 是 Hibernate 的心脏,它包含了数据库连接信息、Hibernate 的配置选项,以及对象-关系映射文件的位置。以下是一个简单的配置文件示例: ```xml &lt;!DOCTYPE hibernate-configuration ...

    hibernate系列(一)hibernate入门

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

    hibernate基础 入门/ hibernate basic

    #### 二、Hibernate简介及其重要性 **Hibernate** 是一款开源的对象关系映射框架,它允许开发者以透明的方式处理持久化POJO(Plain Old Java Object)。Hibernate的核心优势在于它能够自动处理对象与关系型数据库...

    基于hibernate的简单留言本

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

    p6spy简介显示hibernate配置

    **P6Spy简介** P6Spy是一款开源的Java数据库监控工具,它允许开发者在不修改应用程序代码的情况下,透明地监控数据库活动。P6Spy通过拦截并记录JDBC调用来获取数据库查询、更新和其他操作的详细信息,这对于性能...

    Hibernate电子书(全)

    #### Hibernate简介 Hibernate是一种“对象/关系映射”(Object/Relational Mapping,简称ORM)技术,它解决了Java对象模型与关系数据库模型之间的不匹配问题。传统的数据库编程需要在代码中直接编写SQL语句,而...

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

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

    hibernate开发所依赖的jar包

    同时,别忘了配置日志系统,以便在开发过程中获取必要的反馈信息。 总之,这个压缩包提供的jar包构成了一个基本的Hibernate开发环境,你可以根据项目需求扩展或调整。不过,要注意的是,现代的开发环境中,许多这些...

    Hibernate逍遥游记 .pdf

    1. Hibernate简介: Hibernate是一个开源的轻量级对象关系映射框架,它提供了Java对象与数据库表之间的映射,极大地简化了数据库编程。使用Hibernate,开发者可以将对象持久化到关系型数据库,而不需要直接与JDBC打...

    hibernate视频

    #### 1.1 Hibernate简介 - **概念**:Hibernate是一个开放源代码的ORM框架,它允许开发人员以面向对象的方式处理数据库。 - **优点**: - 易于使用,能够极大地提高开发效率。 - 提供了强大的查询语言——HQL...

    hibernate测试

    1. **Hibernate简介** Hibernate是一个开源的Java库,它为Java应用程序提供了一个框架,用于管理持久化数据。通过使用Hibernate,开发者可以避免编写大量的JDBC代码,而是专注于业务逻辑,从而提高开发效率。 2. *...

Global site tag (gtag.js) - Google Analytics