`
dins2003
  • 浏览: 4036 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

从今天起开始学习hibernate3

阅读更多
从今天开始,要学学Hibernate。
先学习hibernate3的官方文档,e文太滥了,看的很费时。
按照Tutorial一步一步来:
一、建立以下目录结构及文件:
-d:\projects
          |-lib
               |-jdbc
                   |-hsql.jar
               |-hibernate3
                         |-antlr.jar
                         |-asm.jar
                         |-asm-attrs.jar
                         |-cglib.jar
                         |-commons-collections.jar
                         |-commons-logging.jar
                         |-dom4j.jar
                         |-ehcache.jar
                         |-hibernate3.jar
                         |-jta.jar
                         |-log4j.jar
          |-hibernate3
                 |-tutorial
                         |-src
                            |-org
                               |-hibernate
                                  |-tutorial
                                       |-domain
                                            |-Event.java
                                            |-Event.hbm.xml
                                       |-util
                                            |-HibernateUtil.java

                                       |-EventManager.java
                            |-hibernate.cfg.xml
                            |-log4j.properties
                         |-build.xml
                         |-bin
          |-hsql_database
                  |-start.bat
                  |-manager.bat



二、各文件内容及说明:

1、start.bat是启动hsql数据库的批处理文件,内容:
java -cp ../lib/jdbc/hsql.jar org.hsqldb.Server -database.0 tutorial -dbname.0  tutorial

用服务器模式启动hsql数据库
2、manager.bat是启动hsql数据库图形管理界面的处理文件,内容:
java -cp ..\lib\jdbc\hsql.jar org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:hsql://localhost/tutorial 

3、build.xml内容:

<project name="hibernate-tutorial" default="compile">

    <property name="sourcedir" value="${basedir}/src"/>
    <property name="targetdir" value="${basedir}/bin"/>
    <property name="librarydir" value="${basedir}/../../lib/hibernate"/>

    <path id="libraries">
        <fileset dir="${librarydir}">
            <include name="*.jar"/>
        </fileset>
	<fileset dir="${librarydir}/../jdbc">
            <include name="*.jar"/>
        </fileset>
    </path>

    <target name="clean">
        <delete dir="${targetdir}"/>
        <mkdir dir="${targetdir}"/>
    </target>

    <target name="compile" depends="clean, copy-resources">
      <javac srcdir="${sourcedir}"
             destdir="${targetdir}"
             classpathref="libraries"/>
    </target>

    <target name="copy-resources">
        <copy todir="${targetdir}">
            <fileset dir="${sourcedir}">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

    <target name="run" depends="compile">
    	<java fork="true" classname="org.hibernate.tutorial.EventManager" classpathref="libraries">
      	  <classpath path="${targetdir}"/>
     	   <arg value="${action}"/>
    	</java>
    </target>
</project>


dos命令行下输入“ant” 将编译程序,输入“ant run -Daction=store”将持久类Event的对象写入数据库中,输入“ant run -Daction=list”将显示存储在数据库中的被持久化的Event类对象。(当然前提是当前目录在d:\projects\hibernate3下)

4、log4j.properties内容:

og4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout


引用

Hibernate uses commons logging and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer Log4j

hibernate采用commons logging并提供两种选择,Log4j 和 JDK 1.4 logging,多数开发者倾向于Log4j,如果是Log4j就要在类路径下配置log4j.properties(或者通过-Dlog4j.configuration=xx.properties来指定),如果是JDK 1.4 logging就要配置:logging.properties 并通过-Djava.util.logging.config.file=D:\your\path\to\logging.properties来指定。具体的设置参考http://www.blogjava.net/tedeyang/articles/18935.html
5、hibernate.cfg.xml内容:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:hsql://localhost/tutorial</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>

        <mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

6、Event.java
package org.hibernate.tutorial.domain;

import java.util.Date;

public class Event {
    private Long id;

    private String title;
    private Date date;
   /*The no-argument constructor is a requirement for all persistent classes; 
   The constructor can be private, however package or public visibility is    required for runtime proxy generation and efficient data retrieval without bytecode instrumentation. */
    public Event() {}

    public Long getId() {
        return id;
    }
   //由于id通常由hibernate产生,故id的setter方法一般用private来限制。
   //

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}



7、Event.hbm.xml
<?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="org.hibernate.tutorial.domain">
	<class name="Event" table="EVENTS">
		<id name="id" column="EVENT_ID">
			<generator class="native" />
		</id>
		<property name="date" type="timestamp" column="EVENT_DATE" />
		<property name="title" />
	</class>
</hibernate-mapping>


引用

Hibernate by default uses the property name as the column name. This works for title, however, date is a reserved keyword in most databases so you will need to map it to a different name. Hibernate cannot know if the property, which is of java.util.Date, should map to a SQL date, timestamp, or time column. Full date and time information is preserved by mapping the property with a timestamp converter.

Hibernate 默认的把属性名作为列名,但是,date在大多数的数据库管理系统中是保留关键字,所以的映射一个其他的名字,当一个属性类型为java.util.Date时,hibernate不知道该如何映射到SQL类型的date, timestamp, or time,但是timestamp类型完全包含了date 和 time 的所有信息,所以可以将java.util.Date映射为timestamp

8、HibernateUtil.java
package org.hibernate.tutorial.util;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}



9、EventManager.java
package org.hibernate.tutorial;

import org.hibernate.Session;

import java.util.*;

import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;

public class EventManager {

    public static void main(String[] args) {
        EventManager mgr = new EventManager();

        if (args[0].equals("store")) {
            mgr.createAndStoreEvent("My Event", new Date());
        }else if (args[0].equals("list")) {
            List events = mgr.listEvents();
            for (int i = 0; i < events.size(); i++) {
                Event theEvent = (Event) events.get(i);
                System.out.println(
                        "Event: " + theEvent.getTitle() + " Time: " + theEvent.getDate()
                );
            }
	 }
        HibernateUtil.getSessionFactory().close();
    }

    private void createAndStoreEvent(String title, Date theDate) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Event theEvent = new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);

        session.getTransaction().commit();
    }
    private List listEvents() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List result = session.createQuery("from Event").list();
        session.getTransaction().commit();
        return result;
   }

}
分享到:
评论

相关推荐

    Hibernate DOC中文文档(学习Hibernate必备手册)

    《Hibernate DOC中文文档》是学习Hibernate框架的重要参考资料,它详细阐述了Hibernate的核心概念、配置、对象关系映射(ORM)以及各种操作技巧。对于初学者和有经验的开发者来说,这份文档都是掌握Hibernate不可或...

    hibernate学习总结文档

    **Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。

    hibernate源码的学习

    总结,学习Hibernate源码有助于我们理解ORM的底层实现,掌握对象关系映射的精髓,从而在实际项目中更好地利用Hibernate提升开发效率和代码质量。通过对"hibernate-one2many"的分析,我们可以深入研究和实践一对一和...

    hibernate3+mysql简单学习实例.rar

    【标题】:“Hibernate3+MySQL简单学习实例” 【描述】:这个压缩包“hibernate3+mysql简单学习实例.rar”包含了一个使用Hibernate3 ORM框架与MySQL数据库进行交互的初级教学示例。Hibernate是一个强大的Java对象...

    学习hibernate(从这里开始)

    《学习Hibernate:从这里开始》 Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。对于初学者来说,理解和掌握Hibernate的核心概念、配置...

    hibernate学习心得

    总之,学习 Hibernate 从配置数据库连接开始,逐步到生成代码、配置文件、数据库操作,最后是优化和进阶。这个过程中,理解 ORM 的工作原理,熟练掌握 CRUD(Create, Read, Update, Delete)操作,以及学会使用查询...

    Hibernate3框架系列 [ 1 ]

    总结来说,本系列文章将带领读者从零开始搭建Hibernate3环境,理解其配置细节,并通过实例演示如何利用Hibernate实现数据库的CURD操作。这不仅是对Hibernate3基本功能的掌握,也为后续深入学习和应用ORM框架奠定了...

    hibernate3 中文参考手册

    手册会以实例驱动的方式,帮助读者从零开始学习Hibernate,逐步掌握其核心概念和应用技巧,最终能够熟练地运用Hibernate框架进行数据持久化操作。 由于文档内容的OCR扫描可能造成部分内容识别错误或缺失,我们在...

    hibernate学习笔记,学习大纲【吐血推荐】

    **Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大...这份"hibernate大纲.docx"文档将是你学习Hibernate的得力助手,详细解释每个知识点,助你在ORM的世界里游刃有余。

    hibernate学习笔记

    在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....

    hibernate学习文档

    ### Hibernate 学习文档知识点详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (Object Relational Mapping, ORM) 框架,它能够将 Java 应用程序中的对象模型与数据库的关系模型进行映射,使得开发人员...

    Hibernate3源码

    Hibernate3作为历史版本,虽然已被更先进的Hibernate4和5所取代,但其源码仍具有极高的学习价值,特别是对于理解ORM框架的工作原理、事务管理、缓存机制等方面。 一、Hibernate3概述 Hibernate3是在Hibernate2的...

    hibernate验证框架学习

    ### hibernate验证框架学习 #### 一、简介与入门 **Hibernate Validator** 是一个流行的 Java 验证框架,它实现了 **JSR 349**(即 Java Bean Validation API)规范,提供了强大的验证功能,帮助开发者确保应用...

    hibernate3.jar及其源代码文件

    标题"hibernate3.jar及其源代码文件"指出,这是一个关于Hibernate 3的资源包,包含了hibernate3.jar这个核心库的二进制版本以及对应的源代码。Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得...

    Hibernate学习心得

    首先,让我们从Hibernate的基础开始。`Hibernate第一章.txt`可能涵盖了这一主题。Hibernate是一个Object-Relational Mapping(ORM)工具,它允许开发者用面向对象的方式处理数据库。通过使用Hibernate,我们可以将...

    hibernate学习笔记第二天的源码

    在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...

    Hibernate3所有包和配置文件

    **正文** Hibernate3 是一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发人员可以使用面向...这个压缩包为学习和使用Hibernate3提供了一个完整的环境,可以从基础开始逐步深入探索ORM的奥秘。

    开始学习Hibernate

    ### 开始学习Hibernate #### Hibernate简介与配置 Hibernate是一个开源的对象关系映射(Object-Relational Mapping,简称ORM)框架,用于Java应用中简化数据库操作。通过将对象模型与关系型数据库模型之间的转换...

Global site tag (gtag.js) - Google Analytics