初学Hibernate的困惑(各位帮帮忙) 小弟最近刚学HIbernate,可是不知道如何在eclipse下创建。请各位高人指点一下。(最好能说完整一些)谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搞了两天Hibernate,终于能够顺利地把流程跑下来了……主要流程如下(以tomcat为例,项目主目录为myweb):1、安装Hibernate。网上讲得够多了,就不再重复了。2、配置XML文件。把log4j.properties、hibernate.cfg.xml(也可以用hibernate.properties,这两个文件同时存在的时.cfg.xml会覆盖.properties)拷到myweb/WEB-INF/classes(所有的XML文件都放在这里)。3、修改hibernate.cfg.xml,配置connection.datasource和dialect,例如: <property name="connection.datasource">java:comp/env/link</property> <property name="show_sql">true</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>关于dialect是什么,参见Hibernate参考手册。MySQL就用MySQLDialect就行了。然后把这边放着,不要忘了顺便把Tomcat里面的DataSource配置好.4、我的习惯是先把数据库建立起来,然后生成.hbm.xml和java类。所以建立数据库吧!暂称为mydb,下设两张表:t1,t2。注意,强烈建议要设立id字段(也就是主键),否则后面生成的时候.hbm.xml会有点“与众不同”……5、用Middlegen生成.hbm.xml。hibernate-middlegen的下载地址:http://sourceforge.net/project/showfiles.php?group_id=40712&package_id=84728注意:不要用ddl2hbm,我在这上面花了一天时间都没能把.hbm.xml建立起来,慢慢推进,不同的报错,都快疯了……最后一个错误是:“建议使用class2hbm”……昏……后来才知道,ddl2hbm基本上被废弃了,已经不提供技术支持了。用Middlegen是个不错的方法。Middlegen的设置也不复杂:主要要配置两个文件。一个是要使用的数据库配置XML,位于middlegen\config\database,文件名为{数据库}.xml,例如MySQL的配置文件就是MySQL.XML,打开后很明了,很容易修改的。附上我的MySQL. 需要修改的项标红了(注意把数据库驱动mysql-connector-java-3.1.8-bin.jar拷到相应的目录): <property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/> <property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.1.8-bin.jar"/> <property name="database.driver.classpath" value="${database.driver.file}"/> <property name="database.driver" value="com.mysql.jdbc.Driver"/> <property name="database.url" value="jdbc:mysql://localhost/link"/> <property name="database.userid" value="root"/> <property name="database.password" value=""/> <property name="database.schema" value=""/> <property name="database.catalog" value=""/> <property name="jboss.datasource.mapping" value="mySQL"/>另一个是Middlegen主目录下的build.xml。修改的主要是:(1)第24行左右的数据库连接,将默认的改为mysql.xml:<!ENTITY database SYSTEM "file:./config/database/mysql.xml">(2)第33行左右的name。这里的name基本上就是将来要连接的表对应类文件所属类的上两级。例如表对应类的包为myweb.elements,则name就是myweb。<property name="name" value="myweb"/>(3)第184行左右的 <hibernate destination="${build.gen-src.dir}" package="${name}.Hibernate" genXDocletTags="false" genIntergratedCompositeKeys="false" javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper" />可以将package="${name}.Hibernate"改为"${name}.elements"(个人习惯)。这个package就是所有表对应类所在的package。也可以改为绝对值,如myweb.elements。至于genXDocletTags,在设置为true的情况下,xml文件带上了XDoclet的标签,可以用XDoclet生成对应类。我们下面使用的是Hibernate自带的hbm2java,所以不必要。但是设为true也没有关系。其余可以不修改。然后在Middlegen主目录下运行ant就行了(没有的话去http://ant.apache.org/下一个就行了,版本要在1.5以上)。一切顺利地话就会出现Middlegen的GUI了。操作很一目了然,还可以设置one-to-many之类的映射关系。比ddl2hbm好得多。完成后按左上角的“Generate”就行了。生成文件在使用默认设置时会放在middlegen\build\gen-src下面。打开检查一下没有问题就可以继续了。6、把XML映射文件都拷到myweb/WEB-INF/classes。修改hibernate.cfg.xml,加入XML映射文件的映射。直接加在<!-- Mapping files -->的下面即可,最终hibernate.cfg.xml为:<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration> <session-factory><!-- database --> <property name="connection.datasource">java:comp/env/link</property> <property name="show_sql">true</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!-- Mapping files --> <mapping resource="t1.hbm.xml"/> <mapping resource="t2.hbm.xml"/> </session-factory></hibernate-configuration>7、使用hbm2java生成对应类文件。首先要配置好setenv.bat。特别注意设置类路径的时候,目前hibernate的版本和这个tools发布时版本不一样,很多类文件名都已经改了,注意比对一下,修改过来。然后把HIBERNATE_HOME、HIBERNATETOOLS_HOME、JDBC_DRIVER、CORELIB、LIB设置好就可以了。除了以上5个路径和类路径以外的都可以删掉。试着在命令行模式下运行一下hbm2java,如果报告Nothing to do,就一切正常了。然后,把生成的XML映射文件都拷到hibernate\tools\bin下。运行:hbm2java *.hbm.xml hbm2java生成完成以后,可以在generated目录下找到按目录存放好的类源文件,目录是每个.hbm.xml文件中<CLASS>中的类名规定的。最后将文件拷到相应目录。8、写个测试类测试一下是否正常,正常的话就一切完成了。如果在配置文件中有什么问题,建议查看HIbernate参考手册,虽然不是很全面,但是应该也很有些帮助。 安装hibernate的Eclipse的插件,推荐MyEclipse,这个集成了很多,很好用的 关于java异常机制 没有任何基础的人想自学java,各位大侠看看行不? 递归 字符串分割速解决 为何构造函数中少作事情好呢? VC.NET和JAVA的优点和缺点都是什么? 关于java通过socket接受xml的问题 java制作成.jar后的中文问题 调用applet的问题,请近来看看 请问谁有这几本经典java书的E文版啊! 找不到类了!!! 利用itext生成pdf多页报表
主要流程如下(以tomcat为例,项目主目录为myweb):
1、安装Hibernate。网上讲得够多了,就不再重复了。
2、配置XML文件。把log4j.properties、hibernate.cfg.xml(也可以用hibernate.properties,这两个文件同时存在的时.cfg.xml会覆盖.properties)拷到myweb/WEB-INF/classes(所有的XML文件都放在这里)。
3、修改hibernate.cfg.xml,配置connection.datasource和dialect,例如:
<property name="connection.datasource">java:comp/env/link</property>
<property name="show_sql">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>关于dialect是什么,参见Hibernate参考手册。MySQL就用MySQLDialect就行了。然后把这边放着,不要忘了顺便把Tomcat里面的DataSource配置好.
4、我的习惯是先把数据库建立起来,然后生成.hbm.xml和java类。所以建立数据库吧!暂称为mydb,下设两张表:t1,t2。
注意,强烈建议要设立id字段(也就是主键),否则后面生成的时候.hbm.xml会有点“与众不同”……
5、用Middlegen生成.hbm.xml。hibernate-middlegen的下载地址:http://sourceforge.net/project/showfiles.php?group_id=40712&package_id=84728
注意:不要用ddl2hbm,我在这上面花了一天时间都没能把.hbm.xml建立起来,慢慢推进,不同的报错,都快疯了……最后一个错误是:“建议使用class2hbm”……昏……后来才知道,ddl2hbm基本上被废弃了,已经不提供技术支持了。用Middlegen是个不错的方法。
Middlegen的设置也不复杂:主要要配置两个文件。一个是要使用的数据库配置XML,位于middlegen\config\database,文件名为{数据库}.xml,例如MySQL的配置文件就是MySQL.XML,打开后很明了,很容易修改的。附上我的MySQL. 需要修改的项标红了(注意把数据库驱动mysql-connector-java-3.1.8-bin.jar拷到相应的目录): <property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/>
<property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.1.8-bin.jar"/>
<property name="database.driver.classpath" value="${database.driver.file}"/>
<property name="database.driver" value="com.mysql.jdbc.Driver"/>
<property name="database.url" value="jdbc:mysql://localhost/link"/>
<property name="database.userid" value="root"/>
<property name="database.password" value=""/>
<property name="database.schema" value=""/>
<property name="database.catalog" value=""/> <property name="jboss.datasource.mapping" value="mySQL"/>另一个是Middlegen主目录下的build.xml。修改的主要是:
(1)第24行左右的数据库连接,将默认的改为mysql.xml:
<!ENTITY database SYSTEM "file:./config/database/mysql.xml">
(2)第33行左右的name。这里的name基本上就是将来要连接的表对应类文件所属类的上两级。例如表对应类的包为myweb.elements,则name就是myweb。
<property name="name" value="myweb"/>
(3)第184行左右的
<hibernate
destination="${build.gen-src.dir}"
package="${name}.Hibernate"
genXDocletTags="false"
genIntergratedCompositeKeys="false"
javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
可以将package="${name}.Hibernate"改为"${name}.elements"(个人习惯)。这个package就是所有表对应类所在的package。也可以改为绝对值,如myweb.elements。
至于genXDocletTags,在设置为true的情况下,xml文件带上了XDoclet的标签,可以用XDoclet生成对应类。我们下面使用的是Hibernate自带的hbm2java,所以不必要。但是设为true也没有关系。
其余可以不修改。
然后在Middlegen主目录下运行ant就行了(没有的话去http://ant.apache.org/下一个就行了,版本要在1.5以上)。一切顺利地话就会出现Middlegen的GUI了。
操作很一目了然,还可以设置one-to-many之类的映射关系。比ddl2hbm好得多。完成后按左上角的“Generate”就行了。生成文件在使用默认设置时会放在middlegen\build\gen-src下面。打开检查一下没有问题就可以继续了。
6、把XML映射文件都拷到myweb/WEB-INF/classes。修改hibernate.cfg.xml,加入XML映射文件的映射。直接加在<!-- Mapping files -->的下面即可,最终hibernate.cfg.xml为:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration> <session-factory>
<!-- database -->
<property name="connection.datasource">java:comp/env/link</property>
<property name="show_sql">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!-- Mapping files -->
<mapping resource="t1.hbm.xml"/>
<mapping resource="t2.hbm.xml"/> </session-factory></hibernate-configuration>
7、使用hbm2java生成对应类文件。
首先要配置好setenv.bat。
特别注意设置类路径的时候,目前hibernate的版本和这个tools发布时版本不一样,很多类文件名都已经改了,注意比对一下,修改过来。然后把HIBERNATE_HOME、HIBERNATETOOLS_HOME、JDBC_DRIVER、CORELIB、LIB设置好就可以了。除了以上5个路径和类路径以外的都可以删掉。试着在命令行模式下运行一下hbm2java,如果报告Nothing to do,就一切正常了。
然后,把生成的XML映射文件都拷到hibernate\tools\bin下。运行:
hbm2java *.hbm.xml
hbm2java生成完成以后,可以在generated目录下找到按目录存放好的类源文件,目录是每个.hbm.xml文件中<CLASS>中的类名规定的。最后将文件拷到相应目录。
8、写个测试类测试一下是否正常,正常的话就一切完成了。如果在配置文件中有什么问题,建议查看HIbernate参考手册,虽然不是很全面,但是应该也很有些帮助。