gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

hibernat_tutorial快速入门

把官方文档开始例子的实施方法总结了一下,用于快速入门之用。

最终程序的目录结构

.

+lib

  <Hibernate and third-party libraries>

+src

  +events

Event.java

EventManager.java

Event.hbm.xml

  +util

HibernateUtil.java

log4j.properties

  hibernate.cfg.xml

+data

build.xml

可以在任意一个磁盘分区的根目录下建立已和 webapp 目录,我是在 e 盘下建了 hibapp 的文件夹,然后按照上面的结构建立哥哥文件夹和文件,至于里面的内容待会再说。

 

要用到的组件

Hibernate

Hsql

Ant

Jdk

这四样,可以到 sourceforge sun 下载,然后解压缩。接下来就是把它们搭配起来。

1.        hibernate 根目录下的 hinernate3.jar lib 目录下的所有 j ar 文件,以及 hsql lib 文件夹里的 hsqldb . jar 拷贝到 webapp lib

2.       假设 ant jdk 是被解压缩在 d:\ ,设置环境变量 ant _ home=d:\ant java _ home=d: \jdk1.5.0_06 ,在 path 添加中添加 %ant_home%\bin

 

文件内容及解析

Event.java 是一个 javabean 形式的类,通过它实现对数据库 EVENTS 表字段的对象化。

package events;

import java.util.Date;

public class Event {

    private Long id;

    private String title;

    private Date date;

    public Event() {}

    public Long getId() {

        return id;

    }

    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;

    }

}

 

Event . hbm . xml 提供 Event 类到 EVENTS 表的映射:

<?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>

      <class name=" events.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>

 

Src 目录下的 hibetnate . cfg . xml 是连接 hsql 数据库的配置文件,具体内容如下:

<?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 </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">create</property>

        <mapping resource="events/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

它将在以 server 模式运行的 hsql 数据库中建立由 events/Event.hbm.xml 配置的数据库表。

 

HibernateUtil . java 用于启动 hibernate 和更方便地操作 SessionFactory

package 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;

      }

}

 

EventManager.java 是用于具体操作 hibernate 的类

package events;

import org.hibernate.Session;

import java.util.Date;

import java.util.List;

import 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());

           }//if

           HibernateUtil.getSessionFactory().close();

      }//main

 

      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);

           eId=theEvent.getId();

           session.getTransaction().commit();

      }

 

}

 

log4j.properties log4j.jar 的配置文件,在 lib 文件夹里, copy src 下即可。

 

build.xml 用于配置 ant

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

<property name="sourcedir" value="${basedir}/src"/>

<property name="targetdir" value="${basedir}/bin"/>

<property name="librarydir" value="${basedir}/lib"/>

 

<path id="libraries">

<fileset dir="${librarydir}">

<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="events.EventManager"

classpathref="libraries">

<classpath path="${targetdir}"/>

<arg value="${action}"/>

</java>

</target>

 

</project>

 

开始运行

首先启动数据库,在 cmd 中依次键入

e:

cd hibapp

java -classpath lib\hsqldb.jar org.hsqldb.Server

结果如下
r_hsql-init.JPG

 

然后,另来一个 cmd ,键入如下命令

e:

cd hibapp

ant run –Daction=store

结果如下
r_hib-util.JPG

这样就新建立了 EVENTS 表,并且插入了一条记录。

 

可以用 hsqldb 自带的数据库管理软件查看一下

另起一个 cmd 键入

e:

cd hibapp

java -classpath lib\hsqldb.jar org.hsqldb.util.DatabaseManager

结果如下
r_hsql-start.JPG
 

Type 改为上图所示,然后 OK 。在右侧的输入栏中键入

select * from events; 然后按 Execute

r_hsql-exec.JPG

posted on 2006-06-25 17:03 gyn_tadao 阅读(478) 评论(0)  编辑 收藏 引用 所属分类: hibernateDatabase

只有注册用户登录后才能发表评论。
<2006年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜