`
wenson
  • 浏览: 1053587 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java基础知识:简单Hibernate入门

阅读更多
  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。
  
       "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> 
      
   true   
   false  
    net.sf.hibernate.dialect.MySQLDialect   
   org.gjt.mm.mysql.Driver  
    jdbc:mysql://localhost:3306/netstore   
   root 
     123456  
    true   
   gb2312   
     
   
  
  插入位置在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
  代码如下:
  
     "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > 
       name="entity.Customers" 
   table="customers"> 
        name="id" 
     type="java.lang.Integer"  
    column="id"
    > 
      
    
        name="name" 
     type="java.lang.String" 
     column="name"  
    length="15" 
   /> 
      name="age"  
    type="int"  
    column="age" 
     length="11" 
   />
  
  引入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 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 配置使用成功
  
  查看数据库:
  
  插入成功!
分享到:
评论

相关推荐

    Beginning Hibernate: For Hibernate 5

    它不仅覆盖了 Hibernate 5 的基础知识,还介绍了与之相关的前沿技术,如 NoSQL 和 Java 8。通过本书的学习,读者可以快速掌握 Hibernate 的核心概念,并能够在实际项目中运用这些知识来构建高效、可维护的应用程序。...

    java基础入门之Hibernate 入门

    **Java基础入门之Hibernate入门** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库中存储和管理对象的便捷方式。在这个“Java基础入门之Hibernate入门”中,我们将深入理解...

    java基础 包含:Java入门 基础语法 JAVA 类和对象 JAVA 高级类 等等

    总的来说,Java作为一门广泛应用于各领域的编程语言,其基础知识涵盖了从入门到高级的各种概念和技术,无论你是初学者还是经验丰富的开发者,都能在Java的世界里找到挑战和机遇。通过深入学习和实践,你可以掌握开发...

    图书:Hibernate入门 - 第二版

    《Hibernate入门 - 第二版》是一本专注于Java领域持久化技术的书籍,主要围绕开源ORM框架Hibernate进行深入讲解。Hibernate是Java开发中最流行的Object-Relational Mapping(对象关系映射)工具之一,它极大地简化了...

    初学hibernate,hibernate入门

    以上就是Hibernate的基础入门知识,包括其概念、核心组件以及简单的使用示例。随着对Hibernate的深入学习,你会发现它还支持更高级的功能,如级联操作、多对一、一对多等复杂关系映射、缓存机制、延迟加载等,这些都...

    Hibernate入门(代码+笔记)

    总结来说,本教程涵盖了Hibernate的基础知识,从入门到实体映射,再到复合主键和实体层设计,旨在帮助初学者快速掌握Hibernate的使用,从而更高效地进行数据库操作。通过实践这些知识点,你将能够熟练地在Java应用中...

    hibernate入门简单实例

    以下是关于Hibernate入门的一些关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类的过程,通过这种方式,我们可以使用面向对象的编程方式来操作数据,而无需直接编写SQL语句。 2. **...

    java javaee struts2 spring hibernate免费学习视频教程

    - **Java Web基础**:讲解Servlet、JSP的基础知识,如何搭建Java Web环境,并进行简单的Web应用开发。 - **Java Web进阶**:介绍Filter、Listener的使用,以及如何处理客户端请求和服务器响应。 ### Java EE技术栈 ...

    hibernate入门数据简单插入

    标题"hibernate入门数据简单插入"指的是使用Hibernate框架进行数据库的基本操作,特别是数据的插入。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在应用程序中处理数据库对象,而无需直接编写...

    Hibernate入门教程.pdf

    ### Hibernate入门教程知识点详解 #### 一、Hibernate框架简介 **Hibernate** 是一款开放源代码的**对象关系映射(Object-Relational Mapping,简称ORM)**框架,它为Java应用提供了一种高效的机制,用于处理Java...

    Java Web整合开发完全自学手册:Struts+Hibernate+Spring+Eclipse源码

    《JavaWeb整合开发完全自学手册》主要介绍Struts、Hibernate、Spring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、...

    《Hibernate快速入门手册》

    阅读《Hibernate入门》(Word版)文档,读者将逐步掌握Hibernate的基础知识,为更深入的Java持久层开发打下坚实基础。通过实践和理解这些知识点,开发者可以更加高效地处理Java应用程序与数据库之间的交互,提高开发...

    Hibernate入门笔记

    ### Hibernate入门知识点详解 #### 一、环境搭建与配置 - **工程创建**:首先,创建一个名为`HibernateDemo`的Java工程,这是构建Hibernate应用的基础。为了使工程能够识别和运行Hibernate相关的代码,需要正确地...

    极好的hibernate入门实例

    标题“极好的hibernate入门实例”表明这是一份关于Hibernate的初级教程,旨在帮助初学者快速掌握Hibernate的基本概念和用法。Hibernate是一个强大的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务...

    02_传智播客hibernate教程_hibernate入门案例的细节分析

    【标题】:“02_传智播客hibernate教程_...通过这个详细的教程,学习者不仅可以了解Hibernate的基础知识,还能通过实例深入理解并掌握其在实际项目中的应用。这将为后续的Java Web开发或企业级应用开发打下坚实基础。

    Hibernate基础和入门:新建表和插入表

    标题“Hibernate基础和入门:新建表和插入表”表明这篇内容将主要围绕Hibernate这一Java持久化框架的基础知识展开,重点讲解如何使用Hibernate创建数据库表以及进行数据插入操作。Hibernate是一个强大的ORM(对象...

    零基础学Java.Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).

    学习这个课程,你需要逐步掌握这些技术的基础知识,理解它们如何协同工作,以及如何根据项目需求选择合适的技术栈。从JSP和Servlet入门,逐渐深入到更高级的框架如Struts和Spring,再掌握数据库操作技巧如Hibernate...

    Java Web 基于Spring Struts Hibernate 轻量级架构开发基础

    在"Java Web 基于Spring Struts Hibernate 轻量级架构开发"一书的3-6章中,你可能会学习到以下知识点: 1. Spring框架的入门:包括Spring环境的搭建、IoC容器的使用以及Bean的生命周期管理。 2. Spring AOP的理解:...

    hibernate入门源代码

    **Hibernate入门源代码详解** Hibernate 是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。这个资源包包含了“chapter07”目录下的源代码,是学习Hibernate基础知识的理想起点。让...

Global site tag (gtag.js) - Google Analytics