Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition
First Claim
1. A method for providing for persistence of objects in an object-oriented computer system, comprising:
- (a) instantiating an object from a class definition and loading the object into a computer program executed by the computer system, wherein the object may be modified in the computer program; and
(b) storing the object in a database connected to the computer, so that the object persists beyond the execution of the computer program, wherein persistence semantics for storing the object are not specified as part of the class definition.
2 Assignments
0 Petitions
Accused Products
Abstract
A method, apparatus, and article of manufacture for providing for persistence of Java™ objects. A Java™ object is instantiated from its corresponding Java™ class definition and then loaded into a Java™ virtual machine. The class definition corresponding to the Java™ object can be derived using either the Java™ Reflection API. Once the class definition is derived, it can be used to inspect the contents of the Java™ object. A structured type instance is then generated from the inspected contents of the Java™ object, wherein the structured type instance is stored in a column of a table of a relational database managed by a relational database management system. As a result of these steps, the Java™ object is persistently stored in the database, yet the persistence semantics for storing the object are not specified as part of the class definition of the object, which means that the persistence semantics are orthogonal to the class definition.
-
Citations
78 Claims
-
1. A method for providing for persistence of objects in an object-oriented computer system, comprising:
-
(a) instantiating an object from a class definition and loading the object into a computer program executed by the computer system, wherein the object may be modified in the computer program; and
(b) storing the object in a database connected to the computer, so that the object persists beyond the execution of the computer program, wherein persistence semantics for storing the object are not specified as part of the class definition. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
deriving the class definition for the object; and
inspecting the contents of the object using the derived class definition.
-
-
4. The method of claim 3, wherein the object is a Java™
- object.
-
5. The method of claim 4, wherein the deriving step comprises the step of using the Java™
- Reflection Application Programming Interface (API) to derive the class definition for the object.
-
6. The method of claim 1, wherein the database is a relational database.
-
7. The method of claim 6, wherein the object is stored as a structured type instance in the relational database.
-
8. The method of claim 7, wherein the structured type instance is stored in a column of a table in the relational database.
-
9. The method of claim 7, further comprising mapping the class definition to the structured type when the class definition can be modified.
-
10. The method of claim 9, wherein the mapping step comprises:
-
invoking a writeSQL method of the class definition to write the data of the object into an instance of SQLOutputStream constructed from a binary stream;
converting the binary stream in the SQLOutputStream instance into a binary large object (BLOB); and
converting the BLOB into a structured type instance and storing the instance into the database.
-
-
11. The method of claim 10, further comprising mapping the structured type to the class definition when the class definition can be modified.
-
12. The method of claim 11, wherein the mapping step comprises:
-
defining a structured type instance for each class definition, so that each attribute of the class definition has a corresponding attribute in the structured type instance;
constructing an ObjectStream Binary Large Object (BLOB) that represents a structured type instance;
reading type information from the ObjectStream to materialize the object from its corresponding class definition;
constructing an SQLInputStream instance from a remaining portion of the ObjectStream, and calling the class definition'"'"'s readSQL method to initialize the object from the SQLInputStream.
-
-
13. The method of claim 7, further comprising mapping the object to the structured type instance when the class definition cannot be modified and does not implement a SQLData interface.
-
14. The method of claim 13, wherein the mapping step comprises:
-
serializing the object'"'"'s contents and storing the serialized contents as a BLOB in the database; and
mapping the class definition to a structured type instance.
-
-
15. The method of claim 14, further comprising mapping the structured type instance to the object when the class definition cannot be modified and does not implement the SQLData interface.
-
16. The method of claim 15, wherein the mapping step comprises:
-
constructing an ObjectStream from the structured type instance that maps the class definition;
reading type information from the ObjectStream to materialize the appropriate class definition as an object, and using deserialization on an ObjectInputStream representing the BLOB to initialize the attributes of the object.
-
-
17. The method of claim 16, wherein the ObjectStream indicates the format of the structured type instance.
-
18. The method of claim 15, wherein the mapping step comprises:
-
creating an ObjectStream Binary Large Object (BLOB) with appropriate headers;
using serialization on an ObjectOutputStream that creates a content BLOB;
writing the content BLOB into the ObjectStream BLOB;
converting the ObjectStream BLOB into a structured type instance; and
storing the structured type instance in the database.
-
-
19. The method of claim 7, further comprising mapping the object to a structured type instance using a data exchange with a relational database system.
-
20. The method of claim 19, wherein the mapping step comprises:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream, determining that the corresponding class does not implement a SQLData interface, constructing a SQLInputStream instance from the ObjectStream BLOB, and deserializing the SQLInputStream instance to initialize the object instantiated from the class definition.
-
-
21. The method of claim 20, wherein the mapping step comprises:
-
constructing a SQLOutputStream instance that wrappers a binary stream, converting the SQLOutputStream instance into a BLOB;
converting the BLOB to a structured type instance;
inserting the structured type instance into the database.
-
-
22. The method of claim 7, further comprising mapping the object to a structured type instance using serialization when the class definitions do not implement serialization.
-
23. The method of claim 22, wherein the mapping step comprises:
retrieving attributes of a class definition in order to initialize an object from an ObjectStream.
-
24. The method of claim 23, wherein the mapping step comprises:
setting attributes of the class definition in order to initialize an ObjectStream from an object.
-
25. The method of claim 24, wherein the mapping step comprises:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream to determine that the corresponding class definition does not implement the SQLData interface, and then materializing the object from the class definition; and
invoking one or more methods to initialize the object.
-
-
26. The method of claim 25, wherein the mapping step comprises:
-
retrieving one or more attributes of the object to construct an SQLOutputStream, converting the SQLOutputStream into a BLOB;
converting the BLOB into a structured type instance; and
inserting the structured type instance into the database.
-
-
27. A computerized apparatus for providing for persistence of objects in an object-oriented computer system, comprising:
-
(a) a computer system;
(b) logic, performed by the computer system, for;
(1) instantiating an object from a class definition and loading the object into a computer program executed by the computer system, wherein the object may be modified in the computer program; and
(2) storing the object in a database connected to the computer, so that the object persists beyond the execution of the computer program, wherein persistence semantics for storing the object are not specified as part of the class definition. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
deriving the class definition for the object; and
inspecting the contents of the object using the derived class definition.
-
-
30. The system of claim 29, wherein the object is a Java™
- object.
-
31. The system of claim 30, wherein the logic for deriving comprises logic for using the Java™
- Reflection Application Programming Interface (API) to derive the class definition for the object.
-
32. The system of claim 27, wherein the database is a relational database.
-
33. The system of claim 32, wherein the object is stored as a structured type instance in the relational database.
-
34. The system of claim 33, wherein the structured type instance is stored in a column of a table in the relational database.
-
35. The system of claim 33, further comprising logic for mapping the class definition to the structured type when the class definition can be modified.
-
36. The system of claim 35, wherein the logic for mapping comprises logic for:
-
invoking a writeSQL method of the class definition to write the data of the object into an instance of SQLOutputStream constructed from a binary stream;
converting the binary stream in the SQLOutputStream instance into a binary large object (BLOB); and
converting the BLOB into a structured type instance and storing the instance into the database.
-
-
37. The system of claim 36, further comprising logic for mapping the structured type to the class definition when the class definition can be modified.
-
38. The system of claim 37, wherein the logic for mapping comprises logic for:
-
defining a structured type instance for each class definition, so that each attribute of the class definition has a corresponding attribute in the structured type instance;
constructing an ObjectStream Binary Large Object (BLOB) that represents a structured type instance;
reading type information from the ObjectStream to materialize the object from its corresponding class definition;
constructing an SQLInputStream instance from a remaining portion of the ObjectStream, and calling the class definition'"'"'s readSQL method to initialize the object from the SQLInputStream.
-
-
39. The system of claim 33, further comprising logic for mapping the object to the structured type instance when the class definition cannot be modified and does not implement a SQLData interface.
-
40. The system of claim 39, wherein the logic for mapping comprises logic for:
-
serializing the object'"'"'s contents and storing the serialized contents as a BLOB in the database; and
mapping the class definition to a structured type instance.
-
-
41. The system of claim 40, further comprising logic for mapping the structured type instance to the object when the class definition cannot be modified and does not implement the SQLData interface.
-
42. The system of claim 41, wherein the logic for mapping comprises logic for:
-
constructing an ObjectStream from the structured type instance that maps the class definition;
reading type information from the ObjectStream to materialize the appropriate class definition as an object, and using deserialization on an ObjectInputStream representing the BLOB to initialize the attributes of the object.
-
-
43. The system of claim 42, wherein the ObjectStream indicates the format of the structured type instance.
-
44. The system of claim 41, wherein the logic for mapping comprises logic for:
-
creating an ObjectStream Binary Large Object (BLOB) with appropriate headers;
using serialization on an ObjectOutputStream that creates a content BLOB;
writing the content BLOB into the ObjectStream BLOB;
converting the ObjectStream BLOB into a structured type instance; and
storing the structured type instance in the database.
-
-
45. The system of claim 33, further comprising logic for mapping the object to a structured type instance using a data exchange with a relational database system.
-
46. The system of claim 45, wherein the logic for mapping comprises logic for:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream, determining that the corresponding class does not implement a SQLData interface, constructing a SQLInputStream instance from the ObjectStream BLOB, and deserializing the SQLInputStream instance to initialize the object instantiated from the class definition.
-
-
47. The system of claim 46, wherein the logic for mapping comprises logic for:
-
constructing a SQLOutputStream instance that wrappers a binary stream, converting the SQLOutputStream instance into a BLOB;
converting the BLOB to a structured type instance;
inserting the structured type instance into the database.
-
-
48. The system of claim 33, further comprising logic for mapping the object to a structured type instance using serialization when the class definitions do not implement serialization.
-
49. The system of claim 48, wherein the logic for mapping comprises logic for:
retrieving attributes of a class definition in order to initialize an object from an ObjectStream.
-
50. The system of claim 49, wherein the logic for mapping comprises logic for:
setting attributes of the class definition in order to initialize an ObjectStream from an object.
-
51. The system of claim 50, wherein the logic for mapping comprises logic for:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream to determine that the corresponding class definition does not implement the SQLData interface, and then materializing the object from the class definition; and
invoking one or more methods to initialize the object.
-
-
52. The system of claim 51, wherein the logic for mapping comprises logic for:
-
retrieving one or more attributes of the object to construct an SQLOutputStream, converting the SQLOutputStream into a BLOB;
converting the BLOB into a structured type instance; and
inserting the structured type instance into the database.
-
-
53. An article of manufacture embodying logic of a method for providing for persistence of objects in an object-oriented computer system, the method comprising:
-
(a) instantiating an object from a class definition and loading the object into a computer program executed by the computer system, wherein the object may be modified in the computer program; and
(b) storing the object in a database connected to the computer, so that the object persists beyond the execution of the computer program, wherein persistence semantics for storing the object ate not specified as part of the class definition. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78)
deriving the class definition for the object; and
inspecting the contents of the object using the derived class definition.
-
-
56. The method of claim 55, wherein the object is a Java™
- object.
-
57. The method of claim 56, wherein the deriving step comprises the step of using the Java™
- Reflection Application Programming Interface (API) to derive the class definition for the object.
-
58. The method of claim 53, wherein the database is a relational database.
-
59. The method of claim 58, wherein the object is stored as a structured type instance in the relational database.
-
60. The method of claim 59, wherein the structured type instance is stored in a column of a table in the relational database.
-
61. The method of claim 59, further comprising mapping the class definition to the structured type when the class definition can be modified.
-
62. The method of claim 61, wherein the mapping step comprises:
-
invoking a writeSQL method of the class definition to write the data of the object into an instance of SQLOutputStream constructed from a binary stream;
converting the binary stream in the SQLOutputStream instance into a binary large object (BLOB); and
converting the BLOB into a structured type instance and storing the instance into the database.
-
-
63. The method of claim 62, further comprising mapping the structured type to the class definition when the class definition can be modified.
-
64. The method of claim 63, wherein the mapping step comprises:
-
defining a structured type instance for each class definition, so that each attribute of the class definition has a corresponding attribute in the structured type instance;
constructing an ObjectStream Binary Large Object (BLOB) that represents a structured type instance;
reading type information from the ObjectStream to materialize the object from its corresponding class definition;
constructing an SQLInputStream instance from a remaining portion of the ObjectStream, and calling the class definition'"'"'s readSQL method to initialize the object from the SQLInputStream.
-
-
65. The method of claim 59, further comprising mapping the object to the structured type instance when the class definition cannot be modified and does not implement a SQLData interface.
-
66. The method of claim 65, wherein the mapping step comprises:
-
serializing the object'"'"'s contents and storing the serialized contents as a BLOB in the database; and
mapping the class definition to a structured type instance.
-
-
67. The method of claim 66, further comprising mapping the structured type instance to the object when the class definition cannot be modified and does not implement the SQLData interface.
-
68. The method of claim 67, wherein the mapping step comprises:
-
constructing an ObjectStream from the structured type instance that maps the class definition;
reading type information from the ObjectStream to materialize the appropriate class definition as an object, and using deserialization on an ObjectInputStream representing the BLOB to initialize the attributes of the object.
-
-
69. The method of claim 68, wherein the ObjectStream indicates the format of the structured type instance.
-
70. The method of claim 67, wherein the mapping step comprises:
-
creating an ObjectStream Binary Large Object (BLOB) with appropriate headers;
using serialization on an ObjectOutputStream that creates a content BLOB;
writing the content BLOB into the ObjectStream BLOB;
converting the ObjectStream BLOB into a structured type instance; and
storing the structured type instance in the database.
-
-
71. The method of claim 59, further comprising mapping the object to a structured type instance using a data exchange with a relational database system.
-
72. The method of claim 71, wherein the mapping step comprises:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream, determining that the corresponding class does not implement a SQLData interface, constructing a SQLInputStream instance from the ObjectStream BLOB, and deserializing the SQLInputStream instance to initialize the object instantiated from the class definition.
-
-
73. The method of claim 72, wherein the mapping step comprises:
-
constructing a SQLOutputStream instance that wrappers a binary stream, converting the SQLOutputStream instance into a BLOB;
converting the BLOB to a structured type instance;
inserting the structured type instance into the database.
-
-
74. The method of claim 59, further comprising mapping the object to a structured type instance using serialization when the class definitions do not implement serialization.
-
75. The method of claim 74, wherein the mapping step comprises:
retrieving attributes of a class definition in order to initialize an object from an ObjectStream.
-
76. The method of claim 75, wherein the mapping step comprises:
setting attributes of the class definition in order to initialize an ObjectStream from an object.
-
77. The method of claim 76, wherein the mapping step comprises:
-
constructing an ObjectStream BLOB that represents a structured type instance;
reading type information from the ObjectStream to determine that the corresponding class definition does not implement the SQLData interface, and then materializing the object from the class definition; and
invoking one or more methods to initialize the object.
-
-
78. The method of claim 76, wherein the mapping step comprises:
-
retrieving one or more attributes of the object to construct an SQLOutputStream, converting the SQLOutputStream into a BLOB;
converting the BLOB into a structured type instance; and
inserting the structured type instance into the database.
-
Specification