花了小半天,终于把一个简单的hibernate程序搞通了,成功的向数据库中添加了数据。现在冷静下来想一下,其实也挺简单的,但在具体的过程中自己出了不少的错误,究其原因有二:其一是自己从网上找了一些程序,但没有理解其根本意思就开始照着上面的代码编写,结果编写出来的大多不能正常运行;其二是由于公司只提供eclipse开发工具,没有myeclipse插件,所以开发hibernate, struts框架的时候就很不方便。我采用hibernate Synchronizer插件来进行开发。因为在有许多同行都推荐它,但具体怎么样,我现在还不好说,毕竟刚开始用这个插件。若想了解hibernate Synchronizer的特性,网上google一下,多的是。
好了,现在具体来说说这个简单的例子。
首先,需要具备以下条件;
1:eclipse 3.2或者其它版本。此文所采用的是3.2英文版。
2:Mysql 数据库以及驱动程序.jar文件。
3:hibernate Synchronizer插件。可从sourcefourge上下载。
4:hibernate文件包,里面包括所有的jar文件。
第二:在MYSQL中建立一个测试数据库,名为test。并建立一个数据表person:
use test;
create table person(
ID int auto_increment primary key,
Name char(10),
Sex char(1),
Address char(20));
第三,在eclipse中新建一个java project。命名为hibernateTest。并导入JRE文件.
第四,右键单击已经建立好的JAVA工程,将hibernate和mysql的.jar文件导入到工程中。具体操作:右键单击工程->Build path->Configure build path->add external JARS 导入hibernate和mysql的相关jar文件。至此我们已经搭建好了开发环境,下一步开始进行实际开发。
第五,右键单击工程,选择new-->other-->hibernate-->hibernate configure file,在弹出窗口中填入相应内容,eclipse将会自动生成hibernate的configure 文件。在弹出的窗口中也可以选择数据源配置方式,方法只要在窗口在connection项中选择database便可。有兴趣的可以自己试试看。
注意:请保证configure文件是处于工程的根目录下面,否则在编译的时候会因为找不到該文件而出错。
第六,在工程中新建一个包,名字随你喜欢,主要是用来存放一些JAVA文件。右键单击工程hibernateTestànewàpackageà写入包名,这里我所用的包名是src。完成以后,单击所建立的包,newàotheràhibernateàhibernate mapping file,出现配置窗口,如果前面步骤正确的话,将会看到如图的画面,点击tables对应的refresh按键,将会出现你所建数据库中的表,此时选择我们所建立的person表,点击finish,会看到src目录中出现了一个person.hbm.xml文件,利用hibernate Synchronizer Editer打开这个文件,方法:右键单击該文件àopenwithàhibernate Synchronizer Editer。查看其中ID的<generator class>属性,确认該属性配置为identity,自动增长型。配置完成。
经过上一步后,因为我们采用hibernate Synchronizer,eclipse会为我们自动生成一个person.java文件和一个BasePerson.java文件,BasePerson.java位于一个独立包中,主要是提供对数据库表person的相应字段的get和set方法,它实现Serializable接口。并重写了其中的equals(),hashCode()和toString()方法。我理解为实际上就是一个POJO,没有什么其它特殊的。而person.java只是继承了BasePerson.java,这样做的好处就是实现程序更好的封装。
上面的步骤都完成以后,我们需要将person.hbm.xml文件映射到hibernate.cfg.xml文件中去,这样才能程序找到person这个类。方法:依次执行1和2。(1)右键单击person.hbm.xmlàhibernate Synchronizerà Synchronizefiles 。(2)右键单击person.hbm.xmlàhibernate SynchronizeràAdd mapping reference。
经过以上所有操作,我们完成了所有需要配置的文件,现在来编写一个测试文件,测试我们的上述配置是否成功。新建一个JAVA文件。放在src 目录下,在下输入以内容:
package src;
import java.util.Date;
import java.util.Iterator;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Hello {
/**
*
*
*/
public Hello(){
}
public static void main(String[] args) throws Exception{
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Person person = new Person();
person.setName("hejian22");
person.setSex("F");
person.setAddress("http://test.com.cn");
session.save(person);
session.flush();
session.close();
}
}
完成后,运行該文件,会出现错误,经过多番查找资料,才发现hibernate Synchronizer插件有一个BUG,当我们通过add mapping file向hibernate.cfg.xm.添加映射文件的时候,它会自动将hibernate.cfg.xm.的标题部份去掉。这时只要把标题部份写上便可以成功执行。
在这里我只写出了向数据库中添加记录这一项功能,其它功能可以由自己去试验。都是最基础的东西,还得继续努力。
总结:经过这次教训,自己意识到一个问题,我们不能总把从网上找到的代码就直接拿去运行調试,而应该弄清楚它的基本结构,因为可能其中存在许多问题,要想把一段代码真正变成自己的,还是要经过一定的探索。