Hibernate3之Hello, Word程序
这个板块太冷清了,记得范智曾经转贴过一个网上的“史上最简单的Hibernate入门”,内容却是乱起八糟。
现在Falcon要开始使用Hibernate了,我就勉为其难,出个cauchy版本的“Hibernate3之Hello, Word程序”吧!
Hibernate运行时依赖于以下软件包:
cglib-full-2.0.2.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.5.jar
ehcache-0.9.jar
hibernate3.jar
jta.jar
使用Hibernate首先要定义主配置文件hibernate.cfg.xml,再定义数据库映射文件*.hbm.xml,编写或产生DAO类,最后使用DAO类。
其中数据库映射文件和DAO类在实践中有3种使用方法:
1. 全部手工编写
2. 编写数据库映射文件,使用Hibernate工具,产生DAO类
3. 编写DAO类,使用类似XDoclet的标签技术,产生数据库映射文件
为了简化流程,下面以第一种方法为例说明:
1. Hibernate 配置文件
[code]
< ? xml version='1.0' encoding='utf-8'?>
< !DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
<!--
<property name="connection.datasource">java:comp/env/jdbc/mydb</property>
-->
<property name="generate_statistics">true</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.driver_class">com.inet.tds.TdsDriver</property>
<property name="connection.pool_size">150</property>
<property name="connection.url">jdbc:inetdae7:127.0.0.1:1433?database=pubs</property>
<property name="connection.username">Falcon </property>
<property name="connection.password">Falcon</property>
<property name="show_sql">false</property>
<mapping resource="cauchy/Region.hbm.xml"/>
</session-factory>
</hibernate-configuration>
[/code]
2. 数据库映射定义
[code]
< ? 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>
<!-- table created by:
CREATE TABLE REGION ( RECORD_ID VARCHAR(64) PRIMARY KEY, NAME VARCHAR(64) NOT NULL, CODE VARCHAR(12) NOT NULL );
-->
<class name="cauchy.Region" table="REGION">
<id type="string" name="ID" column="RECORD_ID" length="64">
<generator class="uuid.hex"/>
</id>
<property type="string" name="name" column="NAME" length="64" not-null="true" unique="false"/>
<property type="string" name="code" column="CODE" length="12" not-null="true" unique="true"/>
</class>
</hibernate-mapping>
[/code]
3. 自动产生或者手工编写DAO对象
[code]
package cauchy;
import java.io.Serializable;
public class Region implements Serializable {
private String id;
private String code;
private String name;
/**
* @param id The id to set.
*/
public void setID(String id) {
this.id = id;
}
/**
* @return Returns the id.
*/
public String getID() {
return id;
}
/**
* @param code The code to set.
*/
public void setCode(String code) {
this.code = code;
}
/**
* @return Returns the code.
*/
public String getCode() {
return code;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
}
[/code]
4. 运行测试
[code]
package cauchy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestRegion {
public static void main(String[] args) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
long t = System.currentTimeMillis();
Transaction tx = session.beginTransaction();
for(int i = 1000; i <= 9999; i++) {
Region region = new Region();
region.setCode("CODE_" + i);
region.setName("NAME_" + i);
session.save(region);
}
tx.commit();
t = System.currentTimeMillis() - t;
System.out.println("\nTotal Use " + t + " ms\n");
session.close();
sf.close();
}
}
[/code]
5. 程序代码
它是用Hibernate3和Eclipse3开发的,打包为<a href="Hibernate3Test.zip">Hibernate3Test.zip</a>