- 下载Hibernate软件和ant软件,然后解压缩
- 我第一个例子的目录层次结构如下:
Hibernate
-----build.xml
----src
--------onlyfun.caterpillar.FirstHibernate.java
--------onlyfun.caterpillar.User.java
----classes
--------hibernate.cfg.xml
--------onlyfun
--------caterpillar
--------FirstHibernate.class
--------User.class
- 注意我的Hibernate目录是C:/hibernate/hibernate-3.2,我把用于Mysql连接的驱动程序mysql-connector-java-3.1.11-bin房子Hibernate目录的lib子目录下
- 首先看build.xml,这里说明了很多问题,注意
<?xml version="1.0" encoding="GBK"?>
<project name="hibernate" basedir="." default="run">
<!--****************************************************************************-->
<property environment="env" />
<property name="hibernateDir" value="C:/hibernate/hibernate-3.2"/>
<property name="srcdir" value="src"/>
<property name="classesDir" value="classes"/>
<!--****************************************************************************-->
<!-- 定义Hibernate和它所有JAR的classpath -->
<path id="hibernate.lib.path">
<fileset dir="${hibernateDir}/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${hibernateDir}">
<include name="hibernate3.jar"/>
</fileset>
</path>
<!--定义class-->
<path id="project.classpath">
<pathelement location="${classesDir}"/>
</path>
<!--****************************************************************************-->
<!-- 创建存放编译文件的目录 -->
<target name="init">
<mkdir dir="${classesDir}"/>
</target>
<!--**********************************************-->
<!--这里开始编译-->
<target name="compile" depends="init">
<javac srcdir="${srcdir}" destdir="${classesDir}">
<!-- 为编译添加Hibernate的类路径 -->
<classpath refid="hibernate.lib.path" />
</javac>
</target>
<!--**********************************************-->
<!-- 运行编译好的类文件 -->
<target name="run" depends="compile">
<!-- 运行类 -->
<java classname="onlyfun.caterpillar.FirstHibernate">
<!--说明这个class文件的位置-->
<classpath refid="project.classpath"/>
<!-- 添加Hibernate去运行Java文件 -->
<classpath refid="hibernate.lib.path" />
</java>
<echo>配置成功echo>
</target>
</project>
- 现在是两个类
//现在是User类
package onlyfun.caterpillar;
public class User
{
private Integer id;
private String name;
private Integer age;
// 必須要有一個預設的建構方法
// 以使得Hibernate可以使用Constructor.newInstance()建立物件
public User() { }
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Integer getAge()
{
return age;
}
public void setAge(Integer age)
{
this.age = age;
}
}
然后是FirstHibernate类
package onlyfun.caterpillar;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class FirstHibernate
{
public static void main(String[] args)
{
// Configuration 負責管理 Hibernate 配置訊息
Configuration config = new Configuration().configure();
// 根據 config 建立 SessionFactory
// SessionFactory 將用於建立 Session
SessionFactory sessionFactory = config.buildSessionFactory();
// 將持久化的物件
User user = new User();
user.setName("caterpillar");
user.setAge(new Integer(30));
// 開啟Session,相當於開啟JDBC的Connection
Session session = sessionFactory.openSession();
// Transaction表示一組會話操作
Transaction tx= session.beginTransaction();
// 將物件映射至資料庫表格中儲存
session.save(user);
tx.commit();
session.close();
sessionFactory.close();
System.out.println("新增資料OK!請先用MySQL觀看結果!");
}
}
- 最后是配置文件两个
hibernate.cfg.xml文件:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/sample</property>
<property name="connection.username">root</property>
<property name="connection.password">3008602</property>
<mapping resource="onlyfun/caterpillar/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
User.hbm.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="onlyfun.caterpillar.User" table="user">
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
</class>
</hibernate-mapping> - 数据库结构:
sample数据库,里面建立了一个表
CREATE TABLE user (
id INT(11) NOT NULL auto_increment PRIMARY KEY,
name VARCHAR(100) NOT NULL default '',
age INT
); - 现在运行ant,然后到数据库里面查看,就发现有记录了