[转载]MyEclipse8.5 Hibernate反向工程步骤及DAO Type

来源:互联网 发布:单片机驱动12864 编辑:程序博客网 时间:2024/06/01 09:56
原文地址:MyEclipse8.5 Hibernate反向工程步骤及DAO Type无法选择Spring DAO解决方法作者:chricis

今天下午开始学习SSH(struts2+hibernate3+spring3)框架基本配置(数据库用的是mysql5.*),用的是MyEclipse自带的添加功能并不是手动添加,参考了网上的很多资料,发现3者的配置顺序为struts+spring+hibernate或者spring+hibernate+struts。

    我用的是MyEclipse8.5版本,在进行到借助Hibernate反向工程步骤时,出现及DAO Type无法选择Spring DAO,问题Dao session factory not selected

 

查看网上很多资料解决办法如下

(下面这篇相对其它说的更详细,网址是http://www.coridc.com/archives/2344.html)

1 先来看看Hibernate反向工程的详细步骤及配置:

①在MyEclipse Database Explorer perspective下,右键需要操作的数据表,选择Hibernate Reverse Engineering

②在弹出的Hibernate Reverse Engineering窗口中做如下配置:

Java src folder:/login/src

Java package:com.coridc.login.model.domain

选中Hibernate mapping file for each database table

选中Update hibernate configuation with mapping file location

选中Java Data Object

不选Create abstract class并留空Base president class

选中Java Data Access Object

选中Generate precise findBy methods

DAO Type 选择Spring DAO

此时Spring config file会自动填写WebRoot/WEB-INF/applicationContext.xml

此时SessionFactory id会自动填写mySessionFactory – (WebRoot/WEB-INF/applicationContext.xml)

不选Use custom templates

Next;

③在这个窗口中,只需更改ID Generator类型为native即可 -> Finish。

2 但是在上述2中的红色配置中,可能会存在Basic DAO及JNDI DAO可选而Spring DAO不可选的情况

其解决方法如下:

转到MyEclipse Java Enterprise Perspective,选择项目右键 -> Properties -> MyEclipse -> Spring,在Config file extensions处填写xml,然后点击Add,根据目录选择Spring的总配置文件applicationContext.xml,OK,OK。

然后再回到1中的步骤,一步,一步,一步,一步,搞定,The End。

注:此方法有更新版本,具体内容可参照本站博文:关于Hibernate在反向工程时无法选择Spring DAO Type的解决方法【更新版】

3 Hibernate反向工程生成的三个半文件

①com.coridc.login.model.domain.Student.java(MyEclipse生成的使用面向对象的Java语言对数据库表格进行的抽象)

②com.coridc.login.model.domain.StudentDAO.java(封装了一些MyEclipse自动生成的对数据库的操作)

③com.coridc.login.model.domain.Student.hbm.xml(将数据库表格中的字段和POJO类的属性进行映射的定义)

④在Spring总配置文件applicationContext.xml中生成一段id为StudentDAO的bean代码

 

提到,对于Hibernate在反向工程时无法选择Spring DAO Type的情况,只需选择项目右键 -> Properties -> MyEclipse -> Spring,在Config file extensions处填写xml,然后点击Add,根据目录选择Spring的总配置文件applicationContext.xml即可,但今天再次遇到这样的问题,发现这种方法并未能有效解决,与上次所记录的唯一不同的地方就是在写上篇文章的时候,采用的是MyEclipse 6.0版本,而此次开发用的是MyEclipse6.5版本。

实际上,在上文中提到的方法只是表面上的一个Visual操作,其本质是springBeans未能找到相应的mySessionFactory,因此,对于MyEclipse6.5版本,我们需要做如下两种方法的配置:

(我用的是MyEclipse8.5)

方法一、选择项目右键 -> Properties -> MyEclipse -> Spring -> Beans,在Configurration file suffixes处填写xml,然后点击Add,找到mySessionFactory所在xml文件的目录(事实上我没有找到该文件),比如:WebRootWEB-INFapplicationContext.xml,然后逐级目录选择即可。

方法二、找到文件.springBeans(在项目根目录下,或者在项目中搜索字符串springVersion),然后在其中添加代码:(我的代码中已经有下面的代码了)

<config>WebRootWEB-INFapplicationContext.xml</config>

添加完成后,该配置文件的代码如下:

< ?xml version="1.0" encoding="UTF-8"?>
<beansprojectdescription>
<configextensions>
<configextension>xml</configextension>
</configextensions>
<configs>
<config>WebRootWEB-INFapplicationContext.xml</config>(事实上我的文件里有,不缺少)
</configs>
<configsets>
</configsets>
<springversion>2.0</springversion>
</beansprojectdescription>

至此,当我们再对数据库中的某张表进行反向工程时,就可以重新选择Spring DAO Type 的选择了,具体对于Hibernate如何进行反向工程的步骤可以参照本文开始处提到的那篇记录。

 

上面的方法很详细,但还是没能解决我的问题。

继续网上找资料,发现有位网友也遇到同样的问题,它解决办法是:

他用说他以前工程是在MyEclipse8.6中创建,现在在8.5中就出现了同我一样的问题。

于是乎,我下载了更高版本的MyEclipse10,之后进行和8.5中一样的操作,希望奇迹出现。

功夫不负有心人,最后还是成功了。感叹万事开头难啊!继续加油吧,整理整理休息了,明天继续战斗,fighting。。。。

原创粉丝点击