Tips of hibernate +weblogic 8.1 + oracle 9.2 / db2 8.1 bromon原创 请尊重版权 最近的工作都是在webligc 8.1 + hibernate的平台上做开发,涉及的数据库是oracle 9.2和db2 8.1。对于这两个数据库我的了解都远远不够,所以开发中遇到很多问题,还好问题都解决了,很感谢阿古。有的问题也许大家都会遇到,列出我的解决办法,供大家参考。 一、weblogic 8.1下的数据库连接池配置 weblogic 8.1下配置连接池是很容易的,通过console全鼠标操作。以前我做过很多次了,驾轻就熟,很快搞定。编写好pojo和hbm,test一下,结果抛出了一个SQLException,具体信息我没有记录,大概意思是说:“事务没有被提交,因为它处于一个分布式事务中,当分布式事务结束后它会被提交。”打开oracle,确实没有看到测试数据,整个环境中我没有使用JTA,也不存在分布式数据库。Google了一下,看见别人的建议有: 1、 选择jdbc驱动的时候,不要使用xa系列驱动。这个其实大家都知道,xa系列驱动是为JTA准备的,我在配置连接池的时候也确实没有选择这类驱动。排除。 2、 修改startWeblogic.cmd,不要启动pointbase。查看startWeblogic.cmd后没有发现有启动pointbase的迹象,在端口列表中也没有发现。排除。 后来找到的解决办法是,配置webloigc的data 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 again,passed。 上述问题在oracle和db2中都存在。 二、时间字段的处理 开发过程中涉及到了时间的存储和查询,相关的处理要依靠oracle和db2自己的函数,有小小区别。 一个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'''')"; 其中的start和end变量为java.util.Date()。使用了oracle的to_date函数来做日期转换,很多java程序员也许会和我一样,直觉的采用”yyyy-MM-dd HH:mm:ss”的格式作为时间的正则表达式,但是在oracle中会引起错误:”ORA 01810 格式代码出现两次”。原因是sql中不区分大小写,MM和mm被认为是相同的格式代码,所以oracle的sql采用了mi代替分钟。 DB2中的查询语句是: from scene.pojo.TaskInfo as ti where and ti.taskStartTime>=timestamp(''''"+s+"'''') and ti.taskEndTime<=timestamp(''''"+e+"'''')"; DB2中的函数是timestamp,无须指定时间格式。 三、Hibernate的lazy loading Lazy loading是进行集合映射时很有用处的优化选项,但是使用起来容易遇到问题。比如在我们的应用中,user->post形成一对多的映射,User中有一个包含post的List。同时系统采用了一个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文档就提示安装的原因及解决方案
|