详细解决用myEclips的db Browser连接到Oracle后,用反向工程Hibernate Reverse Engineering 生成.hbm.xml,POJD类还有DAO时出错的问题

来源:互联网 发布:厦门天心软件怎么样 编辑:程序博客网 时间:2024/05/29 14:04

详细解决用myEclips的db Browser连接到Oracle后,用Hibernate Reverse Engineering (hibernate反向工程)生成.hbm.xml,POJD类还有DAO时出错的问题 

-------------------

【错误案例】

我用的是Hibernate3,Oracle9i数据库,在DB   Browser中连接Oracle数据库后,为某一表生成*.hbm.xml文件时产生错误,无法生成*.hbm.xml文件,提示错误是An   internal   error   occurred   during: "Generating   Artifacts "...

【原因分析及相关资料:】
########################
 之所以报这个错,大多都与oracle提供的jdbc驱动过旧有关。
 我用的oracle是oracle9i,(算有点老版本了)
 我用的hibernate是3.0(算半新的吧,当然有更新的3.1,但对于oracle9i厂那会来说算新了)
 我用的开发平台是Eclipse3.3+MyEclipse6.0GA(此时也算很新了)

 所以现在导致就是hibernate3于oracle9的jdbc驱动有点不协调。
 (我觉得hibernate3肯定在hibernate2的基础上对内部操作有所升级,但这种升级没有很好的兼容低版本数据库的驱动,所以导致有些在hibernate2中正常的操作,到hibernate3中就不行了。)
 
  那么该怎么办?当然不能吧hibernate3降到hibernate2了,应为那样就丧失了很多hibernate3的新特性。所以我们要升级oracle的jdbc驱动。
 
  在网上看了一下,oracle相关驱动和java的jdk版本的对应(虽然有些不是绝对的)
  
   jdk1.4及更高版本   用ojdbc14.jar  
  jkd1.3   用classes12.jar  
  
   我的jdk是1.5的,最好用用ojdbc14.jar,虽然不是绝对的,用classes12.jar也可以用,
但是用到了hibernate3,那么就最好用ojdbc14.jar。
   高版本的驱动大多都比低版本的修订好多新的限制,以适应当时的开发与使用。

其中有个网友说道:
---
大家注意,在使用OracleJdbc驱动时,必须使用最新的Oracle 10.2.0.0的驱动,否则在连接数据库,特别是低版本的数据时,往varchar2插入数据时,数据量在500字符时,会发生数据绑定错误。 此问题属JDBC错误,在IBatis、Hibernate、Spring中都一样的问题。

附件中的包为Oracle 10.2.0.1.0中带的最新JDBC驱动,没有此问题。
---

   所以强烈推荐大家用高版本的jdbc驱动吧,以适应一些其他应用的需要,如Hibernate、Spring等。

   我的Oracle是9i,但是用oracle 10.2.0.1.0的jdbc驱动仍然没问题。因为oracle的jdbc驱动向下兼容了9i,是否兼容到oracle8或更早不得而知了,有兴趣的朋友可以去试试或去oracle官网查资料。

   先从网上搜,下载一个ojdbc14.jar包

 【详细使用步骤】
  1.把以前的classes12.jar包去掉,加如新的ojdbc14.jar包(最好别两个驱动都用,因为他们jdbc name都是一样的的,他就会找classpath靠在前面的jar包,所以一定要去掉旧的加近新的。)具体设置,是在myEclipse中选择你开发的项目,单击右键选properties,然后在弹出的对话框中选择java builder path,然后选择libraries,然后这里就会显示出你所有要用的类库了和jar包了。如果有clssses12.jar包的话就把他移除点击remove。然后点击add external jar按钮从工程项目外部选择路径把ojdc14.jar包加上。然后单击确定。

  2。在myEclipse的DB Browser 中新建一个连接。在driver name中还是填写统一的oracle.jdbc.driver.OracleDriver。只不过这时最好在dirver jars中选择add jars按钮,选择你所下载的ojdbc14.jar把。这是为了告诉db browser你所用的oracle驱动是从哪个jar包来的。然后填写connection url,然后填写user name,最好填上别空着,应为我发现填写user name后,db browser会把这个 user name 默认为 schema 的值。如果不填也没关系,db browser连接成功后会显示出所用用户的对象,显得很多很很乱,不便于查找。而且其他用户的表要是没给你这个当前连接用户授权的话,那么你还看不到其他用户的表,显示了那么多用户对象也没用。

  3.填入密码,如果不选择save password(保存密码),那么不填也行,反正没有选择save password选项后,当连接时都回让你再输入一下密码。

  4。选择下一步next,然后就是让你选择要显示的schema 。一般的用户最好选择display default  schema (只显示当前连接用户的),这样以后查看起来可以很方便。要是dba(数据库管理员)用户连接的话,可以选择disaplay all  schema (可以查看所有用户的)。要想想查看多个相关用户的,可以选择desplay the selected  schema,此种方式时点击add按钮来添加要选择的 schema ,它会连接一下数据库(可能会让你输入一下密码),然后查询出所有的 schema 供你选择。

  最后点击finsh按钮,到现在db browser的一个connection连接就设置好了。
  不过先不要着急使用他连接数据库。因为先要执行超级重要的第五步!!!!

  5.先重启!!!超级重要的一步。我就是因为没有先重启,所以浪费了很多的时间和脑细胞,痛~~~走了不少弯路。
   5.1 关闭myEclipse开发工具。
   5.2 在服务中关闭当前数据库的oracleService服务
   5.3 然后重新启动当前数据库的Oracleservice服务
   5.4 重新打开没有Eclipse开发工具。

  6.在db browser中使用新配好的连接来连接数据库。
    然后查看表
  7 在选中的表上选择Hibernate Reverse Engineering (hibernate反向工程)。
 
   这下你在试试生成.hbm.xml和POJD类还有DAO,就应该没有什么问题了。
  

原创粉丝点击