转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
Tips of hibernate +weblogic 8.1 + oracle 9.2 / db2 8.1         ★★★★

Tips of hibernate +weblogic 8.1 + oracle 9.2 / db2 8.1

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1844 更新时间:2009/4/22 22:03:01

Tips of  hibernate +weblogic 8.1 + oracle 9.2 / db2 8.1

bromon原创 请尊重版权

 

       最近的工作都是在webligc 8.1 + hibernate的平台上做开发,涉及的数据库是oracle 9.2db2 8.1。对于这两个数据库我的了解都远远不够,所以开发中遇到很多问题,还好问题都解决了,很感谢阿古。有的问题也许大家都会遇到,列出我的解决办法,供大家参考。

 

一、weblogic 8.1下的数据库连接池配置

 

weblogic 8.1下配置连接池是很容易的,通过console全鼠标操作。以前我做过很多次了,驾轻就熟,很快搞定。编写好pojohbmtest一下,结果抛出了一个SQLException,具体信息我没有记录,大概意思是说:“事务没有被提交,因为它处于一个分布式事务中,当分布式事务结束后它会被提交。”打开oracle,确实没有看到测试数据,整个环境中我没有使用JTA,也不存在分布式数据库。Google了一下,看见别人的建议有:

 

1、              选择jdbc驱动的时候,不要使用xa系列驱动。这个其实大家都知道,xa系列驱动是为JTA准备的,我在配置连接池的时候也确实没有选择这类驱动。排除。

2、              修改startWeblogic.cmd,不要启动pointbase。查看startWeblogic.cmd后没有发现有启动pointbase的迹象,在端口列表中也没有发现。排除。

 

后来找到的解决办法是,配置webloigcdata source时,有这么一个选项:

 

Honor Global Transactions

 

它的相关说明是:

 

Specifies whether this data source will participate in existing global (XA) transactions. Unchecking this option while creating the data source should be done rarely and with care. This option can not be changed once the data source is created.

 

       就是它了,把它去掉,try againpassed

      

       上述问题在oracledb2中都存在。

 

二、时间字段的处理

 

开发过程中涉及到了时间的存储和查询,相关的处理要依靠oracledb2自己的函数,有小小区别。

 

一个hibernate中对oracle进行时间查询的例子:

from scene.pojo.TaskInfo as ti where and ti.taskStartTime>=to_date(''''"+start+"'''',''''yyyy-MM-dd HH:mi:ss'''') and ti.taskEndTime<=to_date(''''"+end+"'''',''''yyyy-MM-dd HH:mi:ss'''')";

 

       其中的startend变量为java.util.Date()。使用了oracleto_date函数来做日期转换,很多java程序员也许会和我一样,直觉的采用”yyyy-MM-dd HH:mm:ss”的格式作为时间的正则表达式,但是在oracle中会引起错误:”ORA 01810 格式代码出现两次。原因是sql中不区分大小写,MMmm被认为是相同的格式代码,所以oraclesql采用了mi代替分钟。

 

       DB2中的查询语句是:

from scene.pojo.TaskInfo as ti where and ti.taskStartTime>=timestamp(''''"+s+"'''')  and ti.taskEndTime<=timestamp(''''"+e+"'''')";

 

       DB2中的函数是timestamp,无须指定时间格式。

 

三、Hibernatelazy loading

 

Lazy loading是进行集合映射时很有用处的优化选项,但是使用起来容易遇到问题。比如在我们的应用中,user->post形成一对多的映射,User中有一个包含postList。同时系统采用了一个HibernateSession来管理session,它的逻辑是每进行一次数据库操作,就开新的session,操作完成后立即关闭该session。这样做的好处是可以严格关闭session,避免菜鸟级的错误,但是hibernate.org并不推荐这么做。因为这不适合lazy loading,也不适合跨方法的事务。

 

回到我们的例子,在

[1] [2]  下一页


[办公软件]如何实现Office工具栏、菜单以及菜单命令重命名  [办公软件]如何在Office文档(大)括号内输入多行文字
[办公软件]如何在office(PowerPoint,Word,Excel)中制作带圈的…  [办公软件]批量删除Office文档(word,excle,powerpoint)中的超…
[办公软件]Office(Word,Excel)密码破解软件(Office Password…  [办公软件]如何让低版本的Office也能顺利编辑2007文档
[办公软件]设置office艺术字的形状  [办公软件]如何将Office菜单设置、工具设置、宏设置等应用到…
[办公软件]在Office(word,excel)中输入各级钢筋符号的方法  [办公软件]打开Office文档就提示安装的原因及解决方案
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台