在早前,我们已经知道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>
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>