Review Rashid's works:
class Person<2.0> {
private String firstName;
private String surName;
}
class Person<1.0> {
private String firstName;
private String lastName;
}
Next step?
Separate, then later weave.
this means
+ We seperate when design --> yield easier design
+ We weave when use --> it must be complex enough to serve all business logics
+ Modification to EJB3 should be great (it's same to OODBMS, dont care RDBMS layer)
Why?
+ It's not possible to change all RBMS invesment to OODB
+ It seems that implementing virtual databases over the tranditional RDBMs is better
+ A virtual database (in my case OR/mapping - Hibernate, Ejb3) can be fully applied with AOSD
+ class versioning schema manager (Rashid 2002-2004)
+ annotation
+ concern
+ data alignment concern
This is an idea for separating Object and Relation concerns:
// teacher data concern
@Entity("Teacher", "1.0")
class Teacher {
private int teacherID;
private String firstName;
private String lastName;
}
@Entity("Student", "1.0")
class Student {
private studentID;
private firstName;
private lastName;
}
// separate advisor concern
@Entity("Teacher", "2.0")
class Advisor {
private List adviseeLists;
}
// separate advisor concern
@Entity("Student", "2.0")
class Advisee {
private Advisor advisor;
}
Teacher t = entityManager.load(Teacher.class,
new Integer(1));
Advisor a = versioningManager.morph(t,
Advisor.class);
This is a new idea for field substitution
How the developer access this code?
possible answer: IoC?
@Version(2.0)
class Student {
@Substitute(version="1.0", name="lastName")
private surName;
}
class StudentDAO {
public Student findById(int id) {
// codes go here ...
}
@Conform("th.ac.sut.ent.Student", "2.0")
public static void main(String args[]) {
Student s = new StudentDAO().findById(10);
// not found, throw exception
System.out.println(s.getLastName());
// should be ok
System.out.println(s.getSurName());
}
}