2007-09-25
Hibernate对boolean判断方式在不同数据库(Postgres和Sql Server2000)下的表现
关键字: postgres Sql Server boolean
用Hibernate在一定程度上可以实现跨数据库,但有些时候还是有些问题的,即使没有涉及到数据库的高级特性.最近开发了一项目,开始是在windwos+sql server2000,而服务器环境是Linux + Postgresql.我们知道sql server下判断boolean类型是写=0或1,而postgresql下呢,判断boolean类型是=false或true.但我们是用hibernate3做中间件来完成映射的.那HQL里应该怎样对boolean类型进行判断呢?
我们以从数据库里查询所有未打上删除标记的文章记录为例,第一种写法:
find("from Article a ...
在hibernate3下写hql语句,一定不要采用字符串拼接的方式,因为这样出来的结果往往是错误的和不可预料的,需要用?的方式来写.
比如find("from Article as t where t.keywork like '%中国%'");这样查询是得不到结果的,因为打出来的sql语句里,"中国"变成了"????",最好写成:
find("from Article as t where t.keywork like ?","%中国%");
这样结果就正确了.
在用Lucene实现全站搜索的过程中,很可能会遇到这样的问题,只所有某种特定的信息资源,而不是全部.如:某综合性站点,有新闻,产品,论坛,Blog,视频等资源,而搜索的时候先选一个类型(下拉列表),再输入关键字进行搜索(当然,这种情况可以直接用sql来实现,我们这里是基于lucene的实现考虑).这种情况下,就要用到and和or的查询了.这里假设索引已经建立好了(如何建立索引请参考:http://www.javaeye.com/topic/125599),索引字段为title(标题), type(资源类型,表示新闻还是产品,product为产品,news表新闻),则实现方法如下:
/**
...
Lucene,这是官方称谓,也有许多人叫它Lucence,做搜索和分词用的工具包.也有人说是Java下的搜索引擎框架库,见仁见智的说法罢了.不管叫什么,确实非常有用,比如做全站的搜索,其实它的用处远大于此,但凡涉及到文本搜索的地方就能用到它.我们就以做全站搜索为例,演示一下如何应用Lucene建立索引.
public void index(List<IArticle> list)
{
//IArticle接口提供getName(标题)和getContent(内容)
//list就是从数据库里查询出来的要建立索引的对象的列表
if(list != null && l ...
表现逻辑和业务逻辑的分离是老话题了,近日恰好遇到此相关问题,便把自己心得拿来涂鸦.
表现逻辑和业务逻辑的具体定义不再叙述,我各举一个例子,毕竟具体的例子更容易让人明白.比如,web页面上要显示新闻的列表,要求奇数行显示为红色,偶数行显示为白色,这样的就是表现逻辑;再看这样的需求:web页面上列出用户的头像和用户名,头像和用户名都有超连接,连接到用户的个人主页,连接地址是http://www.xx.com/user/125或者http://www.xx.com/user/robin/,也就是如果用户有用户名,则用用户名为地址,否则就用其id为地址.这样的逻辑可以算业务逻辑.其实有时候业 ...
我最近一直遇到这种情况,技术合同和客户的实际需求有很大的出入.如果按照客户实际需求做,第一,客户需求会越来越多,他说什么就是什么;第二,老大不干;如果按照合同来做,也很糟糕,第一,做出来的东西肯定不满足实际需求;第二,客户不高兴,不满意,不给钱.大家可能要问那签合同时怎么不弄细致一些,这是因为有些需求是后来慢慢发现的,在这里谁也没有错,但怎样才能达到一种共识呢?唉,不知道大家遇到过这种情况没有,真为难啊
我最近用的是MyIE(版本号2.0.2.2961),但最近好象推出了更新的版本,每次打开myIe的时候,都会弹出一个对话框,提示升级或取消,并有一个复选框"1周内不要再提醒我",问题就出在这个复选框上,即使你选择了这个复选框,下次启动myIE它仍然会弹出此升级对话框,不知道是设计人员粗心,还是蓄意不断地弹出对话框,以鼓励大家用他的新版本,不知道大家是否遇到过此情况
在实现一个个Action的时候,总是陷入困惑.因为实现ActionSupport接口的类总是非单例的,这就意味着每处理一个action请求,webwork就会生成一个该类的实例,虽然垃圾回收器的进步使性能的影响进一步减少,但如果过多的业务逻辑写到Action类里还是有可能产生大对象(这样描述可能不够确切),因为业务逻辑还是写到单例中去比较好.
这样我们就需要在Action类里引入一个(或说聚合一个)单例的操作类进来,从而,把具体的业务逻辑转移到这个单例的类里面去.但直接与视图(界面)打交道的是Action类,为了打造友好的用户界面,你将不得不在Action里写一些提示信息如,
th ...
- 17:56
- 浏览 (1295)
- 评论 (6)
- 分类: Webwork/Struts2
- 进入论坛
Webwork2的每个Action都是线程安全的。因为每过来一个request,它就创建一个Action对象。由于现代JDK垃圾收集功能的效率已经不成问题,所以这种创建完一个对象就扔掉的模式也得到了好多人的认可。Rod Johnson甚至以此为例证明J2EE提供的object pool功能是没多大价值的。
Struts 创建的是 Action 的单一实例,并允许多个线程调用它的 execute()。这使请求处理变得更快,因为框架处理每个请求时不用频繁地创建新的 Action 实例。但是因为可以在多个线程之间共享单一对象,所以必须遵守适当的线程注意事项,因为其他线程可能会破坏在这个动作 ...
- 17:27
- 浏览 (332)
- 评论 (0)
- 分类: Webwork/Struts2
Web开发中经常遇到这样的需求,在某个页面a.htm进行某项操作,由于需要登陆而跳转到login.htm进行登陆,而登陆成功后再跳转回a.htm页,下面就对此问题进行简单的实现(webwork+velocity)。
首先我们在login.htm上放一个隐藏的表单域,叫url:
<input type="hidden" name="url" value=="$req.getHeader('Referer');">,它的值就代表login.htm的前一页(也就是从哪页跳转过来的),然后在登陆流程的Action类里接收一下url这个变量:
private String url;// ...
对于有经验的老鸟看这篇东西多余,但如果你是小鸟,还是看看吧!
我们嵌html页面的时候会把变量写到html中,但有的时候html中属性值是没有加引号的,比如<input type=text name=test value=aaa>,诚然,一般的情况下,这是没有问题的,但程序运行期,许多情况是难以预料的,比如你嵌的代码里有如下语句:
<input type=text value=$tableObject.name name=text>,其中$tableObject.name是服务端返回的数据,假设$tableObject.name="Good Morning",由于valu ...
我朋友养着一条小狗,非常聪明,每天,我的朋友会按时给它几块奶油饼干;可是有一天,恰好没饼干了,而我朋友又懒的去买,小狗就抗议了一直冲我朋友叫,小狗叫了一会,发现主人真的没吃的了,就去它的窝了,一会叼着2块饼干回来了,放到我朋友面前,那意思是说 :幸亏我还有剩余的,分你2快吧,怎么样,小狗聪明吧
今天修改带<any>关联的对象报错:org.hibernate.AssertionFailure:collection was not processed by flush()!涉及到了3个对象,一个企业,一个产品,一个收藏,其中收藏里通过<any>关联着企业和产品,是对产品和企业的收藏,映射文件如下:
-----------------------TPrettyFavorite.htm.xml---------------------
<class name="TPrettyFavorite" table="cn_list_TPrettyFavorite">
& ...
最近重读Thinking in Java,绪论部分中,作者提出了如下的观点:在一个良好的面向对象的设计中,每个对象都应该只做一件事,并且作好一件事,而不是做太多的事情.
这里面要注意理解:
第一,每个对象都应该只做一件事情,并不是说其所在类里只有一个方法.他是说让你的对象做更"精确"的事情,能够分解成两个对象的,就不要设计成一个对象.
第二,做好一件事情.有一个理论说的是,当你对一个对象进行抽象时,尽可能把你想到的东西都写上.因为抽象部分是核心,核心是不要轻易去改动的,不要因为暂时不需要某个属性就不去写它.
而我就是那个男孩。
我根本没感觉自己做错了什么。
我真的很无辜........
兄弟们,如果是你,你们会怎么做呢?
男孩终于追上了女孩,但他实在不知道自己做错了什么。
无助的哀求只能换来女孩的一言不发。
良久,女孩吐出一句:以后我不再牵你的手。
男孩子终于明白了一些端倪,难道是自己没注意.......
男孩该如何解释呢?
女孩会原谅他吗?
等待他们的又将是什么呢.........<未完待续>
爱一个人太久了,容易把她成自己身体的一部分,而忽略了她的感觉。
一个男孩和一个女孩彼此相爱了十年。
他们在一个城市里,虽然那里没有他们的家。
一次偶然的机会,他们到了同一个公司工作,于是他们每天一起牵着手去上班,工作,下班.....
虽然清苦,但也充满了美好和幸福,甚至能够看到未来。
有一天,他们象往常一样牵手去上班,快到公司的时候,女孩突然觉得原本挎着自己的那只虽不算很强壮但却是自己最值得依赖的手臂滑开了。最近,她都遇到两次这样的事情了。女孩子自尊心很强的,她感觉男孩子冷落了自己,或者他.......她无法再想下去,下意识地加快脚步,而甩在他身后的是男孩无辜的眼神.......<未完待 ...
- 浏览: 28106 次
- 性别:

- 来自: 河北

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
深度技术GhostXP专业版V9 ...
还是V8.1版本成熟,速度很快,不错,可以一试!
-- by DavyLee -
2008年7月1日,盖茨离职 ...
不知道你的X年经验是几年,不过你确实缺少一些基础经验...
-- by e-ant -
2008年7月1日,盖茨离职 ...
引用这个是不是因为workspace中有eclipse的配置文件,删除那个.me ...
-- by DavyLee -
2008年7月1日,盖茨离职 ...
强阿我从来不用MyEclipse
-- by 王者之剑 -
2008年7月1日,盖茨离职 ...
引用第五:只要先用myEclipse建立了工作区,即使你把myEclipse卸掉 ...
-- by dogstar






评论排行榜