An Introduction to Stateful Framework

在早前,我们已经知道JBoss Seam如何简单的整合EJB3.0和JSF。不过当你了解更多JBoss Seam后,你会觉得,那些只是JBoss Seam的皮毛而已。慢慢的我们将解更多的被称为"next generation"web application framework.的JBoss Seam吧!

                   1.Correct Usage of ORM
                    JBoss Seam是由Gavin King创建的(如果还不知道他-----Gavin King,那就Google下吧,你就会知道Hibernate,因为我们这里还要讲到Hibernate)。首先, JBoss Seam是一个stateful framework,它的关键目标就是更好的与ORM一起工作,并且stateful framework的关键就是ORM的正确使用。
                     ORM的一个主要挑战就是对象世界和关系数据库世界。这里有个关键概念"lazy loading"。当the framework从一个关系数据库加载一个对象时,它并不需要加载与它关联的所有对象。为了更好的理解延迟加载。先看个实例。
                      以下代码是个典型的数据模型:A Teacher object might be associated with a number of Student objects, and each Student object might be associated with a number of Assignment objects, etc.
               
 

   1. @Entity  
   2. public class Teacher implements Serializable {  
   3. protected Long id;  
   4. protected String name;  
   5. protected List  students;  
   6. // getter and setter methods  
   7. }  
   8. @Entity  
   9. public class Student implements Serializable {  
  10. protected Long id;  
  11. protected List  assignments;  
  12. // getter and setter methods  
  13. }  
  14. @Entity  
  15. public class Assignment implements Serializable {  
  16. // ... ...  
  17. }
  18.


假如当加载Teacher object时加载了所有的关联的Student,Assignment ,但是应用程序只需要Teacher object,这样无非是浪费了巨大的资源。Hibernate解决这个方法通过"lazy loading"。这样不会在加载Teacher object的时候,同时加载初始化所有与他关联的对象,可以通过Teacher object的Teacher.getStudents()返回数据库加载Teacher  List.

很好,到现在为止,一切都还不错。但是真正的问题在于web application的数据访问层是"stateless"。作为实例,让我们来看下数据如何在流行的Spring中怎么加载的。当HTTP请求到来,将被转发到Spring/Hibernate并且Hibernate延迟加载Teacher object。得到的数据返回给web表现层。现在,页面要呈现与Teacher object关联的student names(未完,保存,继续......)

<br><a href="http://www.linkedcast.cn" target="_blank"><img src="http://www.linkedcast.cn/website/monitor/access.do?id=9d19090d1a0056555a" border="0" alt="链客中国,写文章也可以赚钱哦"></a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值