`
neeleon
  • 浏览: 184519 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate入门(一)第一个应用实例

阅读更多

一 、第一个应用实例

1 .搭建环境:新建一个名为HibernateDemojava 工程,并导入Hibernatejar 包,特别要注意除了导入lib 下的jar 包还需导入hibernate3.jar 核心jar 包。 由于涉及数据库操作,还应导入mysql 驱动包。

说明,如果使用最新的hibernate hibernate 开发的基本jar(7) 来源 hibernate-distribution-3.3.2.GA.zip  

hibernate3.jar

lib\required 下的所有jar

2 .简述Hibernate 的作用:ORMObject Relational Mapping ,对象关系映射。将java 程序中的对象自动持久化到关系数据库中。而Hibernate 的作用好比就是在java 对象与关系数据库之间的一座桥梁,它主要负责两者之间的映射。在Hibernate 内部封装了JDBC 技术(但只是一个轻量级的封装,因而可以让程序设计人员更方便的以面向对象的思想操纵数据库),并向外提供API 接口。

3 .建新一个名为User.java 的类,即是上面所说的java 对象。我们以后称这种类为实体类(或是持久化类) ,它的对象为实体对象(或是持久化对象)User.java 内容如下:

package com.asm.hibernate.domain;

import java.util.Date;

public class User {

    private int id ;

    private String name ;

    private Date date ;

 

    public int getId() {

       return id ;

    }

    public void setId( int id) {

       this . id = id;

    }

    public String getName() {

       return name ;

    }

    public void setName(String name) {

       this . name = name;

    }

    public Date getDate() {

       return date ;

    }

    public void setDate(Date date) {

       this . date = date;

    }

}

4 .编写配置文件:User.hbm.xml 。它和User.java 放在同一个包下。内容如下:

<? xml version = "1.0" ?>

<! DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

< hibernate-mapping

    package = "com.asm.hibernate.domain" >

 

    < class name = "User" >

       < id name = "id" >

           < generator class = "native" />

       </ id >

       < property name = "name" ></ property >

       < property name = "date" ></ property >  

    </ class >

</ hibernate-mapping >
此配置文件,是用来为User.java 进行配置的,我们以后称这种文件为实体配置文件 (或是持久化类映射文件)   < class> 用来关联一个java 类,注意在前面的根元素下有一个package 属性,这样结合这个packageclass 标签下所指定的类名,就共同关联映射了一个java 类。 其实可以这样理解,每一个包下都有实体配置 文件,而这个配置文件开始的根元素package 指定了此文件所处的位置(或是说它所关联的包),根元素下可以有多个<class> 标签(查阅dtd 文件),它们可以分别来关联包下的java 类文件。

<class> 标签 ,一般建议至少有两个属性:name 属性用来关联一个java 类,比如这里关联了User 类;table 属性用来指定这个类所对应的表文件,如果不指定,系统会自动name 指定的类文件进行关联(比如上面实际是: < class name = "User" table = "user" >  

<class> 标签下的子标签

<!-- [if !supportLists]-->l        <!-- [endif]--><id> 子标签实际就是用来映射主键,<id> 下的name 就是用来指java 类中的id 属性,而它可以有一个 column 属性用来指定表中的主键。同时注意在此标签下有一个 < generator class = "native" /> 标签,它是用来指定主键的生成方式。

<!-- [if !supportLists]-->l        <!-- [endif]--><property> 子标签,就是用来指定java 类的属性映射到表中的一个字段,默认下此标签没有指定column 属性,即是说它会把name 所关联的属性名作为字段名。 如果不想java 类中的某些属性映射到表中,只要不用这个标签来关联这些属性即可。

<!-- [if !supportLists]-->l        <!-- [endif]-->总结:上面的<class><id><property>name 属性都分别指定了java 类,java 类的属性。而tablecolumn 是用来指定表,字段名

配置文件 hibernate.cfg.xml 。它放在当前的项目的根目录下。内容如下:

<! DOCTYPE hibernate-configuration PUBLIC

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >

 

< hibernate-configuration >

    < session-factory name = "foo" >

       < property name = "hibernate.connection.driver_class" > com.mysql.jdbc.Driver </ property >

       < property name = "hibernate.connection.url" > jdbc:mysql://localhost:3306/test </ property >

       < property name = "hibernate.connection.username" > root </ property >

       < property name = "hibernate.connection.password" > 123456 </ property >

      

       < property name = "hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ property >

       < property name = "hibernate.hbm2ddl.auto" > create </ property >

       < mapping resource = "com/asm/hibernate/domain/User.hbm.xml" />    

    </ session-factory >

</ hibernate-configuration >
主配置文件 ,完成了驱动注册,数据库连接,并关联了相应的java 对象配置文件

说明:< mapping > 具体指定了关联的所有实体配置文件,关于它的作用可以注释掉此属性看效果。另通过< property name = "hibernate.hbm2ddl.auto" > create </ property > 指定了根据实体配置文件来自动生成表,其中包括:create/create-drop/update/validate 四种可选方式。

5 .编写测试类: UserTest.java 内容如下:

package com.asm.hibernate.test;

 

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import com.asm.hibernate.domain.User;

 

public class UserTest {

    public static void main(String []args){

       Configuration cf= new Configuration();

       cf.configure();     

       SessionFactory sf=cf.buildSessionFactory();

      

       Session s=sf.openSession();

       Transaction ts=s.beginTransaction(); // 事务

      

       User user= new User();

       user.setName( "jack" );

       user.setDate( new Date());

       s.save(user);

       ts.commit(); // 提交事务

       s.close();

       System. out .println( "done" );

    }

}

6 .分析流程:首先抛开 Transaction tx=s.beginTransaction() tx.commit() ,因为它们是提交事务得。支持提交事务意味着支持数据回滚。说明,通常情况下,很多数据库都默认支持提交事务,所以加这两句代码非常必要。 下面具体谈流程:

第一步 :获取SessionFactory 对象,它会首先构建一个 Configuration 对象,此对象调用可以调用configure ()configure (String resource) 这两种方法:这两种方法在Configuration 中的源代码如下:

public Configuration configure () throws HibernateException {

       configure( "/hibernate.cfg.xml" );

       return this ;

    }

public Configuration configure (String resource) throws HibernateException {

       log .info( "configuring from resource: " + resource );

       InputStream stream = getConfigurationInputStream( resource );

       return doConfigure( stream, resource );

    }
分析这两个源代码可以知道:无参调用最终也是调用这个有参数的方法,所以我们也可以直接传参数调用。 现在的重点是读配置文件,这个配置文件我们一般放在eclipsescr 根目录下,而当eclipse 编译时会自动把这个目录下的文件编译到bin 目录下,而这个bin 目录下是被配置成classpath 环境变量,而 configure 方法就是在classpath 环境变量下查找配置文件。 再来分析,无参调用 configure 方法时,默认的是传递的 hibernate.cfg.xml 配置文件,所以只有取名为这个的配置文件,才可以调用无参的 configure 方法,如果是其它名字的配置文件,则调用含参的配置文件,并且这个参数名应为这个配置文件的名字。 当读取配置文件后的 Configuration 对象,才是一个真正意义上可操控的实例对象。 然后,再用这个对象来构建一个 SessionFactory 对象。 强调说明,这一步整个操作最好是放在类的静态代码块中,因为它只在该类被加载时执行一次。

第二步 得到一个Session 实例,以进行数据库CRUD 操作
第三步 实例化一个java
第四步 持久化操作

第五步 后续操作:主要是关闭连接

7. 实体类定义规则:

Domain object java 对象)必须 要有构造方法,同时建议 有一个id 属性,为了赖加载,这个java 类的声明最好不用 final

8. 开发流程:

官方推荐:先Domain object mapping ,最后是DB 。 常用开发方式:DB 开始,由工具来生成mappingDomain object

9. 总结基本步骤:

环境搭建( 导入相关包等) —> 实体类及配置文件—>

主配置文件( 完成了数据库的配置及通过设置属性创建了相应的表)—> 得到Session 测试应用。

分享到:
评论

相关推荐

    hibernate入门--第一个实例

    【hibernate入门--第一个实例】 Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。通过使用Hibernate,我们可以将数据库操作转换为对Java对象的操作,从而简化了数据库...

    hibernate入门小例子

    【hibernate入门小例子】是一个适合初学者的教程,主要涵盖了如何在JavaWeb项目中使用Hibernate框架与MySQL数据库进行集成。在这个例子中,我们将会深入理解Hibernate的核心概念,包括实体映射、对象关系映射(ORM)...

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

    hibernate入门的第一次代码

    【hibernate入门的第一次代码】是一个针对初学者的指南,旨在帮助他们了解并开始使用Hibernate框架。Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许Java开发者以面向对象的方式操作数据库,减少了手动...

    hibernate入门

    每个实体类需要一个唯一的标识符(主键),并使用`@Entity`注解标记。同时,创建对应的`.hbm.xml`映射文件,描述对象与表的对应关系。 例如,有一个User实体类: ```java @Entity @Table(name = "users") public ...

    webwork+spring+hibernate入门实例

    《webwork+spring+hibernate入门实例》 在当今的Web开发领域,Spring、Hibernate和WebWork(现称为Struts 2)是三个极为重要的框架。本实例将引导初学者深入理解这三大框架的集成与应用,以及如何与MySQL数据库进行...

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

    【标题】:“02_传智播客hibernate教程_hibernate入门案例的细节分析” 在本教程中,我们将深入探讨Hibernate,一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更加专注于业务逻辑而不是...

    hibernate第一个hibernate

    《Hibernate入门:初识与实践》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。...

    极好的hibernate入门实例

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

    hibernate人生中第一个成功及完美程序(适合入门者)

    在这个“hibernate人生中第一个成功及完美程序”中,我们将深入探讨Hibernate的基本概念、核心功能以及如何构建一个简单的示例应用。 一、Hibernate概述 Hibernate是一个开源的ORM框架,它的主要任务是将Java对象与...

    hibernate入门数据简单插入

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在应用程序中处理数据库对象,而无需直接编写SQL语句。这里的“入门”意味着我们将探讨适合初学者的基础知识,主要集中在如何通过Hibernate将数据...

    hibernate快速入门

    **Hibernate 快速入门** ...这只是一个开始,深入学习Hibernate,你将能够更好地驾驭Java应用中的数据库操作,提升开发效率。现在,你可以动手实践,用这些知识解决实际问题,祝你在Hibernate的学习旅程中一帆风顺!

    hibernate入门小程序

    在应用启动时,通常会创建一个SessionFactory实例并保持其在整个应用生命周期内的唯一性。 6. **持久化操作** - **保存(Save)**:使用Session的`save()`方法将新对象插入数据库。 - **更新(Update)**:调用`...

    hibernate3入门

    - **第一个Hibernate程序实例**:创建一个简单的实体类,并将其映射到数据库表中。 - **第二个Hibernate程序实例**:进一步探索更复杂的映射和查询操作。 #### 四、配置Hibernate Hibernate作为ORM解决方案,底层...

    hibernate hellowrold入门级代码

    【hibernate helloworld入门级代码】是针对初学者的一个简单示例,旨在帮助理解Hibernate这一流行的Java对象关系映射(ORM)框架的基本用法。在这个项目中,我们将探讨Hibernate如何将Java对象与数据库中的记录关联...

    图书:Hibernate入门 - 第二版

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

    hibernate入门实例

    通过上述步骤,我们可以完成一个简单的Hibernate入门实例。在实践中,还需要考虑性能优化、关联映射、懒加载、级联操作等高级特性。总的来说,学习Hibernate入门实例能够帮助我们快速理解和掌握这个强大的ORM框架,...

    Hibernate 的第一个例子

    在本文中,我们将深入探讨如何创建Hibernate的第一个例子,帮助初学者快速入门。** **一、Hibernate 简介** Hibernate 提供了丰富的API,简化了Java应用程序与关系数据库之间的交互。它通过XML配置文件或注解来定义...

Global site tag (gtag.js) - Google Analytics