从今天开始,要学学Hibernate。
先学习hibernate3的官方文档,e文太滥了,看的很费时。
按照Tutorial一步一步来:
一、建立以下目录结构及文件:
二、各文件内容及说明:
1、start.bat是启动hsql数据库的批处理文件,内容:
用服务器模式启动hsql数据库
2、manager.bat是启动hsql数据库图形管理界面的处理文件,内容:
3、build.xml内容:
dos命令行下输入“ant” 将编译程序,输入“ant run -Daction=store”将持久类Event的对象写入数据库中,输入“ant run -Daction=list”将显示存储在数据库中的被持久化的Event类对象。(当然前提是当前目录在d:\projects\hibernate3下)
4、log4j.properties内容:
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内容:
6、Event.java
7、Event.hbm.xml
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
9、EventManager.java
先学习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; } }
- tutorial1.rar (5.1 KB)
- 下载次数: 2
相关推荐
《Hibernate DOC中文文档》是学习Hibernate框架的重要参考资料,它详细阐述了Hibernate的核心概念、配置、对象关系映射(ORM)以及各种操作技巧。对于初学者和有经验的开发者来说,这份文档都是掌握Hibernate不可或...
**Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。
总结,学习Hibernate源码有助于我们理解ORM的底层实现,掌握对象关系映射的精髓,从而在实际项目中更好地利用Hibernate提升开发效率和代码质量。通过对"hibernate-one2many"的分析,我们可以深入研究和实践一对一和...
【标题】:“Hibernate3+MySQL简单学习实例” 【描述】:这个压缩包“hibernate3+mysql简单学习实例.rar”包含了一个使用Hibernate3 ORM框架与MySQL数据库进行交互的初级教学示例。Hibernate是一个强大的Java对象...
《学习Hibernate:从这里开始》 Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。对于初学者来说,理解和掌握Hibernate的核心概念、配置...
总之,学习 Hibernate 从配置数据库连接开始,逐步到生成代码、配置文件、数据库操作,最后是优化和进阶。这个过程中,理解 ORM 的工作原理,熟练掌握 CRUD(Create, Read, Update, Delete)操作,以及学会使用查询...
总结来说,本系列文章将带领读者从零开始搭建Hibernate3环境,理解其配置细节,并通过实例演示如何利用Hibernate实现数据库的CURD操作。这不仅是对Hibernate3基本功能的掌握,也为后续深入学习和应用ORM框架奠定了...
手册会以实例驱动的方式,帮助读者从零开始学习Hibernate,逐步掌握其核心概念和应用技巧,最终能够熟练地运用Hibernate框架进行数据持久化操作。 由于文档内容的OCR扫描可能造成部分内容识别错误或缺失,我们在...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大...这份"hibernate大纲.docx"文档将是你学习Hibernate的得力助手,详细解释每个知识点,助你在ORM的世界里游刃有余。
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
### Hibernate 学习文档知识点详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (Object Relational Mapping, ORM) 框架,它能够将 Java 应用程序中的对象模型与数据库的关系模型进行映射,使得开发人员...
Hibernate3作为历史版本,虽然已被更先进的Hibernate4和5所取代,但其源码仍具有极高的学习价值,特别是对于理解ORM框架的工作原理、事务管理、缓存机制等方面。 一、Hibernate3概述 Hibernate3是在Hibernate2的...
### hibernate验证框架学习 #### 一、简介与入门 **Hibernate Validator** 是一个流行的 Java 验证框架,它实现了 **JSR 349**(即 Java Bean Validation API)规范,提供了强大的验证功能,帮助开发者确保应用...
标题"hibernate3.jar及其源代码文件"指出,这是一个关于Hibernate 3的资源包,包含了hibernate3.jar这个核心库的二进制版本以及对应的源代码。Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得...
首先,让我们从Hibernate的基础开始。`Hibernate第一章.txt`可能涵盖了这一主题。Hibernate是一个Object-Relational Mapping(ORM)工具,它允许开发者用面向对象的方式处理数据库。通过使用Hibernate,我们可以将...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
**正文** Hibernate3 是一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发人员可以使用面向...这个压缩包为学习和使用Hibernate3提供了一个完整的环境,可以从基础开始逐步深入探索ORM的奥秘。
### 开始学习Hibernate #### Hibernate简介与配置 Hibernate是一个开源的对象关系映射(Object-Relational Mapping,简称ORM)框架,用于Java应用中简化数据库操作。通过将对象模型与关系型数据库模型之间的转换...