最简单的Hibernate例子(Hibernate3)

作者在 2007-12-10 11:10:15 发布以下内容

自己最近初学Hibernate,上网搜简单的例子,结合自己的说下。有些网上的缺包没有说明,有些又写了点多余的类,所以对初学者来说不一定是最方便的。总结一下,下面这个应该是比较简单的,知道Eclipse、MySql基本操作的就应该会。

我用的是Eclipse3.2,Tomcat5.0,MySql,JDK1.5

包:antlr-2.7.5H3.jar,cglib-nodep-2.1_3.jar,commons-collections.jar,commons-logging.jar,dom4j-1.6.jar,ehcache-1.1.jar,hibernate3.jar,jta.jar,mysql-connector-java-3.1.4-beta-bin.jar。统统放lib文件夹里面。

注意:Hibernate3需要jta.jar,网上的大部分例子都是用的Hibernate2,没有说明这个,我也是找了很久才找到的。

在MySql里新建一个名叫myhibernate数据库,建一张user表,字段有:

id(int[10]),name(char[20]),age(int[3]),gender(char[6])

打开Eclipse,新建一个工程,名字就叫MyHibernate吧。

新建一个User类:(我自己建了一个com.hibernate.bo的package)

package com.myhibernate.bo;

public class User {

private int id;

private String name;

private int age;

private String gender;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String toString() {

return this.id+":"+this.name+" "+this.age+" "+this.gender;

}

}

然后在同一个包中新建映射文件User.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 2.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

<class name="com.myhibernate.bo.User" table="user">

<id name="id" column="id">

<generator class="increment" />

</id>

<property name="name" />

<property name="age" />

<property name="gender" />

 

</class>

</hibernate-mapping>

注意,这里有个<generator class="increment" />,意思是每增加一个记录,id自动加1。这个参数可以更改为在程序里面设置id,改为assigned就行了。这里我们用increment。

然后在src包里面写配置文件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>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql://localhost:3306/MyHibernate</property>

<property name="connection.username">root</property>

<property name="connection.password"></property>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property>

 

<mapping resource="com/myhibernate/bo/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

然后回到com.myhibernate.bo包,写Test类用来执行与数据库的操作:

package com.myhibernate.bo;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class Test {

public static void main(String[] args) {

try{

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Session session = sessionFactory.openSession();

Transaction tx = session.beginTransaction();

User user = new User();

//user.setId(4);//如果前面说到的generator class参数设为assigned,那么新纪录的id就在这里设置,现在是increment可以不用这条语句

user.setName("Jim");

user.setAge(39);

user.setGender("Male");

session.save(user);

tx.commit();

}catch(Exception ex){

ex.printStackTrace();

}

}

}

好了,现在执行吧,你就可以看到你的数据库已经有一条新的纪录了。

默认分类 | 阅读 1619 次
文章评论,共0条
游客请输入验证码