成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

10分鐘用Play!在GAE上實現一個Blog

開發 后端
做這個,是因為在JavaEye上看到看到一篇文章《Play!跑在GAE上,小試GAE》,里面討論了一個新的Java On Rails式框架,來自法國的Play!

做這個,是因為在JavaEye上看到看到一篇文章《Play!跑在GAE上,小試GAE》,里面討論了一個新的Java On Rails式框架,來自法國的Play!(http://www.playframework.org/ )。大概看了下這個框架的介紹,的確很優秀,舉點比較cool的特點:

  • Bind an HTTP parameter to a Java method parameter: 就是說,可以在URL上直接調用Controller里面的方法;
  • Redirect to an action by simply calling the corresponding Java method:這個不用解析了;
  • Don't Repeat Yourself when passing Java objects to templates: 也就是說,從controller往View傳數據,不需要把object放在map里面,可以類似:render(titile, article, user);這樣做,就是Java5里面的動態參數的使用啦;
  • Straightforward file upload management;
  • Distribute an application to several JVMs without configuring anything;
  • Fix the bug and hit Reload: 這個無敵,大概就是說,修改程序后,直接reload程序就好,框架自動編譯程序,因為這個框架內部帶了個Container,所以可以做到這個。這個有點像把Java給動態化了,調試起來省不少事;
  • 另外就是多個plugin可以使用等等。

大概看了下這個框架,感覺蠻好的,但那篇文章里面討論的主要是,Play!集成在GAE里面的一些問題,這個框架帶了個非常非常簡單的Blog程序,就沒法部署到GAE上面成功。很容易理解,GAE閹割過JDK和對JPA的支持是不完善的。我申請GAE賬號很長時間了,但沒有玩過,剛好兩個一起研究一下。

其實GAE的局限主要是:

  1. 底層是基于Big Table的,完全不是關系型的結構,讓他完全支持JPA的復雜關聯關系,太吃力了,所以GAE是不能支持Owned relationship和Many to many owned relationship的,也就是一對多,多對多關系不能支持,官方建議自己建立key,程序里面維護關聯關系。Blog這個sample程序,因為存在這Post和Comment兩個實體,兩者之間是一對多的關系,所以GAE是不能支持的,解決方法很簡單,把原來的JPA定義方法去掉,Comment 里面加個postId的屬性,添加comment時,把這個填上就okay了。
  2. GAE限制了java.net.Inet.*這些class,所以Play!自帶的ehcache1.5版本是用不了的;ehcache1.6聲稱支持GAE了,那就下個ehcache-1.6.0.jar替代掉原來Play!自帶的那個。
  3. GAE里面規定,選取出來的entity不能修改,所以Blog的那個sample里面那種:
  1. posts.remove(post);  
  2. Collections.reverse(posts); 

是不能用的,需要拿出來自己用其他collection里面做,或者在Query的時候排序和過濾。這個限制其實也不麻煩,只是這種設計不適合xxx on rails思想而已,如果是比較早期接觸J2EE的話,這個不會陌生。Model定義那幾個東西,是直接操作數據庫的,也就是我們說的PO,傳統的J2EE上面,PO是不可以在Contrioller層操作的,在下面上來的數據需要轉為VO才能操作,才能扔給View~這就是DTO模式。Apache的beanutil可以做這個事情,但是這只是個例子,直接setter,getter就可以了。。。 這里給出一個解決方法:在Play!里面建個vo的包,建一個PostVo,然后用以下代碼替代上面那兩句,

  1. List<Post> posts = Post.findAll();  
  2. Iterator<Post> postIt = posts.iterator();  
  3. List<PostVo> otherPosts = new ArrayList<PostVo>();  
  4. while (postIt.hasNext()) {  
  5.       Post postItem = postIt.next();  
  6.       if (postItem.id.longValue() != id.longValue()) {  
  7.           PostVo postVo = new PostVo();  
  8.           postVo.setId(postItem.id);  
  9.           postVo.setTitle(postItem.title);  
  10.           postVo.setContent(postItem.content);  
  11.           postVo.setDate(postItem.date);  
  12.           otherPosts.add(postVo);  
  13.      }  
  14. }  
  15.       Collections.reverse(otherPosts); 

當然在view里面要用otherPosts來替代posts,迭代otherPosts就可以了~

經過測試,Blog那個例程已經可以跑起來,可以通過這個網址測試:http://laynezone.appspot.com

 

總  結:

 

Play!這個框架我是蠻喜歡的,難得看到Java有類似的快捷框架出現,如果場合合適的話,值得考慮使用。另外,GAE,在持久化那部份限制蠻多的,但是可以理解,畢竟Google底層的持久化結構并不是關系模型。能夠把JPA實現到這個程度,已經很好了~

 

既然客觀原因不能改變,我們就自己改變去適應它,畢竟withod RMDB已經喊了很長時間,其實只要觀念稍變下,就好了~

 

由于,我看GAE和Play!兩個東西的時間,就是今天(周五)下班到八佰伴吃完個飯回家到現在,不足1個小時,也沒研究Play!的源代碼,所說之處,難免有錯,請大家互相交流~

原文鏈接:http://blog.csdn.net/laynepeng/article/details/4338873

【編輯推薦】

  1. Play Framework 2.0 RC1發布 Java Web框架
  2. Java容器類分析之List ArrayList Vector
  3. 有可能挑戰Java優勢的四種技術
  4. Think in Java之斐波那契數列
  5. Java的poi技術讀取和導入Excel
責任編輯:林師授 來源: laynepeng的博客
相關推薦

2011-01-21 10:30:46

2023-05-27 21:13:34

FlaskURL裝飾器

2022-06-28 12:35:21

DockerPython

2024-09-02 00:03:00

tabs組件CSS

2025-03-26 01:35:00

tabs開發組件

2021-07-15 06:43:11

Bash調試腳本

2021-08-09 10:36:49

Python搜索引擎命令

2021-07-29 23:29:55

web服務器開發

2020-10-30 15:04:16

開發技能代碼

2013-09-13 14:08:01

2022-01-06 18:20:20

Scarlet AndroidWebSocket

2020-07-25 19:40:33

Java開發代碼

2015-09-18 19:38:01

BlackHatSQLChop

2023-10-12 11:48:18

SkyWalking工具

2020-08-07 15:43:03

Python表格代碼

2020-10-13 18:22:58

DevOps工具開發

2014-08-08 09:30:04

android scrollview

2021-04-23 09:50:41

topLinux命令

2022-01-17 09:01:23

NodeJS數據服務器Mock

2011-03-24 10:08:41

UbuntuNagios監控
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区三区四区 | 精品一区二区三区在线观看国产 | 午夜精品久久久久99蜜 | 高清一区二区三区 | 日韩一区二区三区四区五区 | 欧美成人在线网站 | 一区二区高清在线观看 | 日韩精品一区二区三区视频播放 | 国产目拍亚洲精品99久久精品 | 亚洲国产精品一区二区三区 | 中文一区二区 | 99久久精品免费看国产四区 | 91玖玖| 国产成人精品一区二区三区在线观看 | 国产精品亚洲一区二区三区在线 | 国产欧美一区二区三区免费 | 亚洲国产成人在线 | 夜夜摸夜夜操 | 高清欧美性猛交xxxx黑人猛交 | 久久黄网| 国产人成精品一区二区三 | 国产高清在线精品一区二区三区 | 久久久久久影院 | 国产精品自产拍 | 亚洲第一视频网站 | 国产精品一区二 | 中文字幕av在线一二三区 | 亚洲国产精品一区二区第一页 | 网站国产| 91久久夜色精品国产网站 | 99成人 | 天天天天操 | 玖玖综合网 | h视频在线观看免费 | av在线免费观看网站 | 中文字幕在线播放不卡 | 91精品在线观看入口 | 丁香综合| 亚洲精品久久 | 午夜精品一区二区三区三上悠亚 | 国产精品a久久久久 |