`
wenson
  • 浏览: 1041236 次
  • 性别: 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 配置使用成功
  
  查看数据库:
  
  插入成功!
分享到:
评论

相关推荐

    java基础入门之Hibernate 入门

    Hibernate 入门知识

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

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

    Java基础知识由浅入深

    Javase+OOAD+XML+JavaWeb+Junit+ant+Struts+Hibernate+Spring,适合新手入门级教程。

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    高级java笔试题-Coding-with-Java:Java从入门到精通系列

    高级java笔试题 Coding-with-Java 项目介绍 项目地址: 项目介绍: Coding-with-Java 是一个面向新手的 Java 从入门到进阶的项目,内容主要涉及 Java SE,Java EE 和 一些企业级框架的学习及使用,致力于帮助编程...

    Java、JavaEE学习文档.zip

    java知识点汇总。包含HTML、java基础、java高级、数据库入门基础知识、过滤器filter、hibernate入门文档、mybatis入门文档、servlet基础知识、spring框架基础知识、struts2入门基础知识。

    Java Web整合开发王者归来:Java Web.part3

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java语言基础下载

    I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 TCP/IP协议模型 214 基于Java的网络技术...

    Hibernate 中文API文档

    本章是面向Hibernate初学者的...本章面向Hibernate初学者,但需要Java和SQL知识。它是在Michael Goegl所写的指南的基础上完成的。在这里,我们称第三方库文件是指JDK 1.4和5.0。若使用JDK1.3,你可能需要其它的库文件。

    Java Web开发从初学到精通随书光盘源码

    《Java Web开发从初学到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,...

    hibernate中文开发手册

    本章是面向Hibernate初学者的...本章面向Hibernate初学者,但需要Java和SQL知识。它是在Michael Goegl所写的指南的基础上完成的。在这里,我们称第三方库文件是指JDK 1.4和5.0。若使用JDK1.3,你可能需要其它的库文件。

    java web实现数据库连接

    《Java Web从入门到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,如何...

    MyEclipse开发SSH2(Struts2+Spring+Hibernate)应用教程

    虽然其涉及的技术较为繁杂,但是我们根据软件工程的原则,避开底层繁杂的技术细节,并分离页面设计和后台编程任务,仅着重于应用层的构建,是可以在仅具有Java编程知识和简单HTML标签的基础上,快速开发基于SSH2的...

    JAVA WEB从入门到精通 随书源码 J2EE

    第一篇为J2EE开发的基础知识,介绍了Web应用的发展阶段、JSP、Servlet。第二篇、第三篇和第四篇分别采用了相似的行文结构,条理清楚地讲解了Struts、Hibernate和Spring三种框架所包含的组件。第五篇则通过Struts+...

    《Java Web编程宝典(十年典藏版)》光盘源码

    第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用...

    CSDN最全面JavaEE面试题(Spring,SpringMVC,Hibernate,Mybatis)

    1,java基础知识 2,javaWeb 3,java主流三大框架面试题

    Struts,Hibernate,Spring集成开发宝典.pdf

    《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

Global site tag (gtag.js) - Google Analytics