﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-只有平淡无奇的人才会觉得生活平淡无奇,换个聚焦点,你会发现这个世界有很多美好的东西。</title><link>http://www.cnblogs.com/Jonllen/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 10 Oct 2008 21:13:55 GMT</lastBuildDate><pubDate>Fri, 10 Oct 2008 21:13:55 GMT</pubDate><ttl>60</ttl><item><title>急!急!!急!!!求解如何在WebService中使用Session或Cookie---实现WebService身份验证(客户端是Flex)</title><link>http://www.cnblogs.com/Jonllen/archive/2008/06/02/1211989.html</link><dc:creator>Jonllen Peng</dc:creator><author>Jonllen Peng</author><pubDate>Mon, 02 Jun 2008 03:10:00 GMT</pubDate><guid>http://www.cnblogs.com/Jonllen/archive/2008/06/02/1211989.html</guid><wfw:comment>http://www.cnblogs.com/Jonllen/comments/1211989.html</wfw:comment><comments>http://www.cnblogs.com/Jonllen/archive/2008/06/02/1211989.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.cnblogs.com/Jonllen/comments/commentRss/1211989.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Jonllen/services/trackbacks/1211989.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 现在我们开发一个项目，业务逻辑层全部用WebService,客户端有Flex和Asp.Net,Flex和Asp.Net的所有业务逻辑数据库的访问全部调用WebService中的方法(好象Flex也不能直接对数据库进行访问,所以也只能用WebService),现在就出现问题了，就是WebService中的权限问题了，比如:我在WebService中有一个Login的方法,还有一个ChangePwd修改用户密码的方法，可之，如果我要调用ChangePwd方法前我一定要判断用户是否Login了,所以一般的情况就是在Login方法里面当用户成功登陆后就Sesssion用户ID或者是用Cookie来保存以唯一标识用户，然后我再在ChangePwd方法里面先判断访问的用户是否存在Session或是有Cookie标识,如果有的话我再允许修改修改他自己当前登陆的密码，但是这些当做为 WebService方法的提供的时候就出现了问题,我在访问用户成功Login后Session当前用户的ID之后,当用户再去调用 ChangePwd方法的时候Session却丢失了，原因是我并不是直接打开IE访问WebService页面,然后在点调用那一个 WebService方法，那样我能成功验证。但我现在要是在我的项目中添加WebService引用,引用成功后.net便会自动生成一个App_WebReferences文件夹来保存引用的WebService的WSDL等信息，我们在调用的时候将WebService实例化后就直接调用Login或ChangePwd方法了，但是我是这样调用的话当我成功Login后能Session一个用户ID，但是当我在调用 ChangePwd后却不能成功,因为我在ChangePwd是判断了Session是否存在,结果Session不存在了,我明明在成功Login后 Session了用户ID但是却在第二次调用ChangePwd的时候不存在了，郁闷&#8230;我用Coookie亦如此,也丢失了,测试可知,我打开页面直接访问WebService中调用他的方法能成功,能植入Cookie,但我添加WebService引用到项目在调用Login方法时候根本就没法值入Cookie,没有报错,但是我在网页临时文件夹和Cookie的文件夹内都找不到Cookie,第二次在调用 ChangePwd时我在判断身份时候当然也是个Cookie不存在。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在网上看了很多Cookie和Session的东西,在WebService中能应用的没几个，有人说要在客户端写个 CookieContainer的Cookie容器来保存WebService传回来的一些Cookie那样便不会丢失,但是有一个非常严重的问题就是我的客户端还必须是Flex，如果只是在.Net中调用那当然没事，我在.net中就直接判断Session或Cookie很方便的,也不存在丢失的问题,就根本不需要的在WebService里面去判断权限了,但是我WebService的客户端还必须是Flex,Flex它好象不能做权限处理的，数据库也不能直接访问,所以便要调用WebService,所有我便想把权限处理放在WebService里面, 客户端不用管的,所以我就不希望还在客户端去写类似:System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); 然后在MyService.WebService service = new MyService.WebService(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; service.CookieContainer = cookieContainer;为我的客户端不只是.net,还有Flex,甚至其他的,那它能有那个对象吗? 所以我就希望能就直接调用,我在WebService里面验证,验证通过就执行，验证不通过则不执行,但是当我想当然就这样做的时候,就出现了以上述的问题,我自认是菜鸟一个,想不到其他办法,现在又真的很急,所以请大家都帮帮忙,给我出出注意,请原谅我占了主页。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 补充一下:基本上我可以确认业务逻辑一定要写成WebService,因为我们经理说不止Flex下次我们的OA系统可能也要用WebServce,WebService能通用,所以就只能在WebService中写验证即用Session或Cookie验证了,请大家在这里帮我想想办法解决。谢谢！！！(如果大家愿意帮我忙话要测试的话可以留言问我要测试WebService,我已经把我写的几个WebService挂到了网上) 感激涕临!!!
<img src ="http://www.cnblogs.com/Jonllen/aggbug/1211989.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42930/" target="_blank">[新闻]Silverlight 2.0正式版下周发布</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>急!急!!急!!!求解如何在WebService中使用Session或Cookie---WebService安全策略</title><link>http://www.cnblogs.com/Jonllen/archive/2008/06/01/1211673.html</link><dc:creator>Jonllen Peng</dc:creator><author>Jonllen Peng</author><pubDate>Sun, 01 Jun 2008 11:37:00 GMT</pubDate><guid>http://www.cnblogs.com/Jonllen/archive/2008/06/01/1211673.html</guid><wfw:comment>http://www.cnblogs.com/Jonllen/comments/1211673.html</wfw:comment><comments>http://www.cnblogs.com/Jonllen/archive/2008/06/01/1211673.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/Jonllen/comments/commentRss/1211673.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Jonllen/services/trackbacks/1211673.html</trackback:ping><description><![CDATA[<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp; 现在我们开发一个项目，业务逻辑层全部用WebService,客户端有Flex和Asp.Net,Flex和Asp.Net的所有业务逻辑数据库的访问全部调用WebService中的方法(好象Flex也不能直接对数据库进行访问,所以也只能用WebService),现在就出现问题了，就是WebService中的权限问题了，比如:我在WebService中有一个Login的方法,还有一个ChangePwd修改用户密码的方法，可之，如果我要调用ChangePwd方法前我一定要判断用户是否Login了,所以一般的情况就是在Login方法里面当用户成功登陆后就Sesssion用户ID或者是用Cookie来保存以唯一标识用户，然后我再在ChangePwd方法里面先判断访问的用户是否存在Session或是有Cookie标识,如果有的话我再允许修改修改他自己当前登陆的密码，但是这些当做为WebService方法的提供的时候就出现了问题,我在访问用户成功Login后Session当前用户的ID之后,当用户再去调用ChangePwd方法的时候Session却丢失了，原因是我并不是直接打开IE访问WebService页面,然后在点调用那一个WebService方法，那样我能成功验证。但我现在要是在我的项目中添加WebService引用,引用成功后.net便会自动生成一个App_WebReferences文件夹来保存引用的WebService的WSDL等信息，我们在调用的时候将WebService实例化后就直接调用Login或ChangePwd方法了，但是我是这样调用的话当我成功Login后能Session一个用户ID，但是当我在调用ChangePwd后却不能成功,因为我在ChangePwd是判断了Session是否存在,结果Session不存在了,我明明在成功Login后Session了用户ID但是却在第二次调用ChangePwd的时候不存在了，郁闷&#8230;我用Coookie亦如此,也丢失了,测试可知,我打开页面直接访问WebService中调用他的方法能成功,能植入Cookie,但我添加WebService引用到项目在调用Login方法时候根本就没法值入Cookie,没有报错,但是我在网页临时文件夹和Cookie的文件夹内都找不到Cookie,第二次在调用ChangePwd时我在判断身份时候当然也是个Cookie不存在。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在网上看了很多Cookie和Session的东西,在WebService中能应用的没几个，有人说要在客户端写个CookieContainer的Cookie容器来保存WebService传回来的一些Cookie那样便不会丢失,但是有一个非常严重的问题就是我的客户端还必须是Flex，如果只是在.Net中调用那当然没事，我在.net中就直接判断Session或Cookie很方便的,也不存在丢失的问题,就根本不需要的在WebService里面去判断权限了,但是我WebService的客户端还必须是Flex,Flex它好象不能做权限处理的，数据库也不能直接访问,所以便要调用WebService,所有我便想把权限处理放在WebService里面,客户端不用管的,就直接调用,我在WebService里面验证,验证通过就执行，验证不通过则不执行,但是当我想当然就这样做的时候，就出现了上述的问题,我真的很急,因为我刚进公司,然后公司里面要赶项目,做一个电子商务的网站,要做一个Asp.net版的和一个Flex版的,所有业务逻辑全调用WebService,而我负责写WebService,一开始就遇到了这个头疼的问题,所以请各位高手帮我想想办法,我自认是菜鸟一个,想不到其他办法,现在又真的很急,所以请大家都帮帮忙,给我出出注意,请原谅我占了主页。</font></p>
<p><font face="Verdana">补充一下:基本上我可以确认业务逻辑一定要写成WebService,因为我们经理说不止Flex下次我们的OA系统可能也要用WebServce,WebService能通用,所以就只能在WebService中写验证即用Session或Cookie验证了,请大家在这里帮我想想办法解决。谢谢！！！(如果大家愿意帮我忙话要测试的话可以留言问我要测试WebService,我已经把我写的几个WebService挂到了网上)<br />
</font></p>
 <img src ="http://www.cnblogs.com/Jonllen/aggbug/1211673.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42925/" target="_blank">[新闻]Wikipedia“变心”，力挺Ubuntu</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>话说Hibernate和ADO.NET  —练习随笔小记</title><link>http://www.cnblogs.com/Jonllen/archive/2008/04/24/1168635.html</link><dc:creator>Jonllen Peng</dc:creator><author>Jonllen Peng</author><pubDate>Thu, 24 Apr 2008 01:15:00 GMT</pubDate><guid>http://www.cnblogs.com/Jonllen/archive/2008/04/24/1168635.html</guid><wfw:comment>http://www.cnblogs.com/Jonllen/comments/1168635.html</wfw:comment><comments>http://www.cnblogs.com/Jonllen/archive/2008/04/24/1168635.html#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://www.cnblogs.com/Jonllen/comments/commentRss/1168635.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Jonllen/services/trackbacks/1168635.html</trackback:ping><description><![CDATA[　　最近在做一个JavaWeb程序,用MyEclipse开发,用Struts(*.do)做开发框架,Hibernate做数据库代理类,负责对数据库的操作,维持数据持久和数据访问,Spring用来整和注入,哎,还用了Ajax,在Java中实现真他妈的让人烦,什么Ajax,根本就是写JS脚本嘛(不过本来也是,就是最原始的那种拉),自己手写了JS脚本，好久没写过这么多了,也当练习一下XMLHTTPRequest拉。
<div>
<fieldset><legend>引用</legend>　　要是在.net中那就方便多了,直接就拖AjaxControlToolkit控件,5个AJAX Extensions核心组件,还有几十个ajax Toolkit控件,有两边对联做广告的,有做像Google智能提示的(说到这个,我做每回有一个问题,就是在指定了返回记录的Item每一行Css样式之后,当用键盘上下的方向键移动所选条的时候,它就出现了脚本错误,也不能用方向键移动所选条了,我试过了,只要不设置class他就没一点问题,能正常移动选择和智能提示,但是不设置样式那哪看得?他默认都是黑字白背景,不过不晓得是不是DIV层做的,我以前用返回&lt;span style='color:red'&gt;Jonllen&lt;/span&gt;做测试,他却没能返回<span style="color: red">Jonllen</span>,然后我对他进行Html编码和反编码都试过了,也不行,在页面里面要是能得到显示Html的效果(说到这里我呀有要叉开话题了,等后面讲考试在说了),要是这样能行的话那也能设置它的Css style了,但是就是不行,不知道大家有没有碰到我这种情况过,还请知道的大虾指点)还有做琐定冻结页面做实现的,还有谈出的等等...要什么有什么,看你要实现什么功能了,但我觉得就是MS这些Ajax控件调用WebServer的太多了,就有时要新写个WebMethod不习惯感觉麻烦了,不过这倒是顺了Ajax的本质咯,就是要回调WebServer的Xml,不过我觉得以前做的Ajax还可以,他没有做成控件,只是要引用dll,回调的是一个Ajax方法,我以前在VS2003里用AjaxPro.dll,感觉还可以,虽然此方法有很多局限性,但用起来感觉挺方便的。MS真是够人性化,Sun也要学着点就好了,不过当前Sun还是做好它的J2EE规范在说吧. </fieldset></div>
刚开始还可以,就是JS不好怎么调试,就只能做死了alert看执行到了那一步,不一会儿JS搞定了,我在JS里面调用的open url是一个servlet类,然后在这里调用Hibernate对数据库操作,以达到Ajax的异步处理,因为我这个项目以前是连SQL Server 2000的,不过现在我要用MYSQL数据库了,呵呵,免费的那种,我就把以前工程里面的Hibernate要连SQL Server 2000的三个驱动包给删了,接着选择DB Browser(数据库浏览器)重新设置了Hibernate的数据连接,Edit更改端口,输入数据库口令,哦,还要添加一个MQSQL数据库连接驱动连接包(jar文件),找啊找，在E盘，选择，配置OK，Next,Finish完成,Open Connection,一长串进度条到结尾后,OK连接成功了,一帆风顺,点开一看几个database下面几个table都对数,我删掉了以前的工程底下hibr包下的一些数据映射对象和相应的DAO数据访问,然后Hibernate Reverse Engineering重新添加删除的那些Hibernate数据库映射对象,用assigned(有主键)的用assigned,用native(自动增长主键)用native,OK,Hibernate代理类搞定,现在只要看servlet里面,...DAO dao = new ...DAO()&#8230;对数据库操作完成!现在就看Ajax的了,它是如何的伟大,在不刷新的情况下异步的CallBack服务器,配置一下WebLogic,Redeploy重新部署,Run运行,打开Brower键如URL看效果咯,满怀期待,想着:onclick提交,addshow()调用JS一个函数,回发到服务器,结果&#183;&#183;&#183;返回的是一个alert('你所请求的页面有异常'),呵呵~哎,为什么类？我关闭一下调试,在重新启动一下,还是提示有异常,为什么,为什么,为什么呢?我认真的检查了我一下JS代码,认真的过了一遍JS里面的function,一个个检查,定义XMLHttpRequest对象、sendRequest(url)发送函数请求、processResponse()处理返回信息的函数,等等...sendRequest(url)发送函数请求,对URL,应该是这个问题,我的url是"servlet/FindServlet?sn=" +ss;FindServlet是我工程ss包下面的FindServlet.java的servlet类,ss是在JS里面var的一个变量,在细想了一下,servlet/FindServlet?sn="+ss,不是ss/FindServlet?sn="+ss吗?不是,后来也用ss也测试了一下,确实不是,那是什么问题呢?难道问题不是出在URL上面,url没错,想了一阵了,灵机一动,测试一下不就知道了吗!我连忙打开FindServlet这个类,一时间还很狠啪着自己的后老勺:你真笨啊!进入FindServlet,在doGet方法里边String shen = request.getParameter("sn");System.out.println(shen);获取sn查询字符串(呵呵.Net学多了),然后再在控制台输出,保存运行,哎,真的输出了,控制台里面输出了"湖南",我sn查询字符串的值,那这么来说,URL确实没有问题,它已经把请求发送到我的这个FindServlet类里面来了,这里我已经能接受到了,接着在FindServlet类往下看,在一些关键性的代码后加上System.out.println("变量值");我习惯性调试Java的方法,调试运行,果然还没有执行完就报异常了,控制台在输出了DAO前面的变量值后后面的就都没有输出了,一定就是DAO的问题了!我把目光转到DAO,第一行AddrtableDAO dao = new AddrtableDAO();就实例化绝对没问题List list = dao.findAll(shen);应该问题System.out.print(list.size());此行在控制台没有输出结果,List list = dao.findAll(shen),findAll(shen)是按指定条件shen对数据库执行查询返回List集合的方法,就是这句对数据库查询有问题了(一时间感觉自己真的了不起,我这个人比容易较骄傲自满,我自己都受不了自己了),马上写了一个static void main()方法测试,果然是Hibernate代理数据库操作类出现了问提,提示Can not Connection不能连接,为什么类?连不上,我明明在DB Browser里配置好了连MySQl的设置,在那里连上了啊,还可以看到数据库和表啊,怎么建的Hibernate数据库代理类就连不上了类,我马上转到了hibernate.cfg.xml Hibernate配置文件,一看,晕了,怎么在配置文件里面用的还是以前的那个的配置设置,我不是改成MySql了吗,我知道了,你在DB Browser选择好数据库连接对象，并未更改Hibernate数据库连接配置,晕了,这MyEclipse怎么这么蠢啊,不知道自动更改Hibernate配置文件,唉痴哦,手动更改后调试运行,心想这次应该能OK了吧，但结果总是出现意外,老和所想的背道而驰的,有出西西了,一长串异常:什么Error Creating SessionFactory等一大片英文,搞得我头都大了,点异常进去看,就是到了那些Hibernate那些砸七砸八的那些包的原类型里了,一个个类N多代码,看得真叫人烦拉,想起就郁闷,这MyEclipse调试可真JB麻烦,又全英文版的(想起.Net中调试,哎```个人觉得Java中就是jar包太繁多了,而一些重要的设置都保存在Xml的配置文件里面,感觉喜欢拿xml配置文件出气!如页面导航等,但内容多了就显得繁杂了,就只能手动修改Source了),心里直骂Java垃圾,不禁双手抱着后老勺往后仰,看这天花板郁闷ING。回下头来看到了这MyEclipse工具,蔑视了工程一下,回到电脑面前,看啊看,顺眼看了这些砸七砸八的包,哎,似乎少了什么东西,凭直觉我又过了那些jar包文件一便,细想了一翻,又仔细看了那些包一遍,我的MySql数据库驱动jar包文件类!怎么没有呢?我再Refresh一下还是没有看到啊!拐了,我虽然删除了以前连Sql Server 2000的3个包,但是怎么MySql的包怎么没有导进来呢?第一时间问为什么?难道又是DB Browser的问题,你在那里选择Add JARS选择是驱动包文件是用的磁盘物理路径,也就是说他没有自动把你所选择的包自动加在到你的工程里面进来了,该死的DB Browser,害得我Hibernate老是连不上,这个问题好象只在你以前用一个数据源现在又换掉一个新的数据库连接时才有,我打工程文件所在目录,进入WebRoot\WEB-INF\lib目录,手动将我E盘底下个那个MySQL数据库连接驱动Jar包Copy到这个目录下,再在工程里面Refresh一下,MySql包就出来了,运行WebLogic打开浏览器,onclick,啊````终于出来了,通过JS查询到数据库服务器里面的数据了。我在Java中实现Ajax就这样成功了!你们看了我写了这么多觉得好不好笑啊,是不是感觉我是垃圾啊,菜鸟一个,我的确也是菜鸟,本来就是,要是高手的话可能一看就知道错误出在那里了,就不会想我这样折腾了吧!是不是我说了一些Java很低级的常识类?而我自己却不清白类!希望大家莫见笑我了,第一次写这些Hibernate知识,我犯的一些错误,应该大家有些Java的朋友在些Hibernate的时候没出现过我这样的问题吧，其实我对Java是比较感兴趣的,但是由于我所学的Java的知识太少,对有一点难的就不知道做了,那是因为我个人学的Java太肤浅的原因,我知道其实在.net中实现在在Java里基本上可以实现的,只不过可能比在.net中实现难一点而已吧。 在网上看到有很多朋友有拿过JAVA的Hibernate和.NET中的ADO.NET进行比较,也有很多人说两着不能进行相比,就像SQL语句不能和存储过程进行相比一样,只要能在恰当的时候用就是好的,我都很认同的他们的观点和看法,而我个人认为呢,只要有自己的对事物认识的观点就是好的。我是一个比较爱说的人,我觉得你只要能认真的去思考分析一件事物,不管你得到的结论是怎么样的,旨在在这个过程你从中是否学到了一些东西,我不喜欢那些平时不爱说话的,因为那时候我们不知道他对这个事物的看法是怎样的,也难以猜测他心里到底在想什么。既然上面有说到Hibernate和ADO.Net,所以我又加上了这一段罗嗦起来了,呵呵,就我这皮毛也当回顾我以前一些知识，谈不上总结也算小记一翻,希望高手们别笑话我们这些新手了,下面就我所了解的Hibernate和ADO.NET比较如下:在Hibernate中，首先我们需要在JAVA工程里面添加Hibernate标签库(我用的是Hibernate 3.1 Core Libraries)的引用,在.Net中我觉得就是using、import名称空间SqlClient、OleDb添加程序集的过程,然后我们需要打开DB Brower建立数据库连接字符串,就是打服务器名用户名密码等,然后Hibernate会这些数据库连接信息保存在hibernate.cfg.xml(默认缺省)这一个xml文件中,在连接数据库的时候值得一提的是需要数据库连接驱动包,不同的数据库有不同的驱动包,个人觉得不同的驱动包作用在与,由于不同数据库用的可能的是不同连接操作方式,如Oracle是表空间的形式存在数据库等,而其他的可能略有不同。正确配置好连接成功后，我们就能在DB Brower里看到数据库和数据库对应的表了,在你连接数据库前添加Hibernate时它会叫你选择包,添加后包下面就会多3个类了,IBaseHibernateDAO、BaseHibernateDAO、HibernateSessionfactory从名字就可以看出来就是一个接口、一个接口实现类(implements)、一个工厂,具体里面是如何实现的以及其原理机制我此小辈能讲清楚的,我还是有自知知明的,等下甭被我的这点Java皮毛知识给歪曲了那就不好了,不过我看里面的代码也很少简单,要理解起来也不难,反正就创建了这3个类,然后我就需要在DB Brower里面选择相应的表Hibernate Reverse Engineering添加对应DAO和Model,Model就是数据库表对象映射实例,数据库表的每一列充当Model类的属性字段,并添加有get、set规则的属性访问器,而DAO类里面则封装的是对该表的一些常见的数据访问操作(insert、delete、update、select),它有自己的HibernateSQL语句(不是一般的sql语句),这一块我手动写得很少,不过和一般的sql语句语法还是很相似, 如有按属性名查询返回Model强类型化List集合等,除此之外,每添加一个表还会自动添加表名.hbm.xml文件,这个xml文件保存数据库映射到Hibernate表字段的具体信息,如主键信息、列长度相应的Java类型等,要注意的是在添加的时候它会叫你选择ID Generator表的信息,这里常见的是assigned(有表主键)和native(自动增长主键),因为在呆后创建的时候它会根据你所选择的信息创建不同的DAO和Model,如在构造函数和一些数据访问的方法里面就可能有需要ID主键的,而对于自动增长的则无须输入ID主键即可。你可以对多个可能用的到表执行上述Hibernate Reverse Engineering映射操作,你可以在不写一局代码的情况下完成对数据库的大多数的一般操作在其他地方很方便的调用,我觉得这就是Hibernate的最大的好处优点;而在.Net中类,相对Hibernate来说我想是一步一个脚印,什么DAO方法等代码一行行写,不过我觉得这样也没什么不好的,我们一般在项目中就用一个SqlHelper类,里面写上对数据库的一些增删改查方法等。根据传来的SQL语句和参数组或存储过程等动态的返回数据集合(List)或记录数等,用起来也挺好的,顶多还对不同的实例添加对应的DAL,这些基本上能满足我们对数据库的基本操作了。不过我觉得在Java中这样实现也可以啊,我以前就在Java里面写了一个SqlHelper类代替了Hibernate,用的是JdbcOdbc数据库连接,感觉也很实用,简单明了,但是Hibernate在一些性能等方面的优势我们上不容忽视的,至少我觉得一个东西的存在它总有它存在的价值,不知道我说得不是不让人感觉到郁闷,我简单的回顾了一帆，第一次写理论这东西,我想错误肯定会有很多,还请大家批评指正,我必虚心受教！ 
  <img src ="http://www.cnblogs.com/Jonllen/aggbug/1168635.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42924/" target="_blank">[新闻]“不可破解”的加密技术出</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>