自己最近初学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();
}
}
}
好了,现在执行吧,你就可以看到你的数据库已经有一条新的纪录了。