| 1 | RAM | 1 |
| 1.1 | Embracing RAM Resident Data | 2 |
| 1.2 | Why This May Not Be For You | 5 |
| 1.3 | Threat Models | 6 |
| 1.4 | ACID Compliance | 7 |
| 1.5 | Using the Book | 9 |
| 2 | Basic Object in Files | 11 |
| 2.1 | An Example | 12 |
| 2.2 | Serializable | 13 |
| 2.2.1 | Transient | 14 |
| 2.3 | The File | 14 |
| 2.4 | Repeated Objects | 16 |
| 2.5 | Linked Objects | 18 |
| 2.6 | Conclusion | 20 |
| 2.6.1 | Lessons | 20 |
| 3 | A Quick Start | 23 |
| 3.1 | Appending Object Streams | 24 |
| 3.1.1 | Avoiding the Header | 25 |
| 3.2 | A Data Store | 26 |
| 3.3 | Conclusion | 27 |
| 3.3.1 | Lessons | 27 |
| 4 | Atomic Operations | 29 |
| 4.1 | Basic Atomicity | 30 |
| 4.2 | Optimistic Commit | 31 |
| 4.2.1 | Pessimistic Commitment | 32 |
| 4.3 | Rollback Wrappers | 32 |
| 4.4 | Conclusion | 34 |
| 4.4.1 | Lessons | 34 |
| 5 | Commands | 37 |
| 5.1 | A Monster Example | 38 |
| 5.2 | Processing Commands | 40 |
| 5.3 | Conclusion | 40 |
| 5.3.1 | Lessons | 41 |
| 6 | Threads | 43 |
| 6.1 | Total Information Locking | 44 |
| 6.2 | Individual Object Locking | 45 |
| 6.3 | Command Level Locking | 46 |
| 6.4 | Conclusion | 48 |
| 6.4.1 | Lessons | 49 |
| 7 | Prevayler | 51 |
| 7.1 | Prevayler 1.0¹s Architecture | 52 |
| 7.2 | An Example | 53 |
| 7.2.1 | Team Objects | 54 |
| 7.2.2 | The TeamRecords Object | 55 |
| 7.2.3 | The PrintRecordsCommand | 56 |
| 7.2.4 | The ReportGameCommand | 56 |
| 7.2.5 | Tying It Together | 57 |
| 7.3 | Conclusion | 58 |
| 7.3.1 | Lessons | 58 |
| 8 | Schema | 61 |
| 8.1 | Conversion | 62 |
| 8.2 | Faking It | 63 |
| 8.2.1 | Adding A New Field | 64 |
| 8.2.2 | The Format | 65 |
| 8.3 | Defining readObject | 67 |
| 8.3.1 | Overriding Built-In Methods . | 67 |
| 8.3.2 | Overriding Everything | 69 |
| 8.4 | Conclusion | 70 |
| 8.4.1 | Lessons | 70 |
| 9 | XML | 73 |
| 9.1 | Cheap XML | 73 |
| 9.2 | Using Commas or Tabs for Tags | 75 |
| 9.3 | Built-inXML | 75 |
| 9.4 | Conclusion | 77 |
| 9.4.1 | Lessons | 77 |
| 10 | Mirrors | 79 |
| 10.1 | Choosing a Model | 80 |
| 10.2 | A Reservation Example | 80 |
| 10.2.1 | RMI Guts | 82 |
| 10.2.2 | Working with RMI | 84 |
| 10.3 | Conclusion | 84 |
| 10.3.1 | Lessons | 85 |
| 11 | Double Checking | 87 |
| 11.1 | Implementation | 88 |
| 11.1.1 | An Object to Back Up | 88 |
| 11.1.2 | Stitching It Together | 90 |
| 11.1.3 | A Hex Dump | 91 |
| 11.2 | Conclusion | 92 |
| 11.2.1 | Lessons | 92 |
| 12 | Prevayler 2 | 93 |
| 12.1 | Basic Prevayler 2 | 93 |
| 12.2 | Simple Example | 95 |
| 12.2.1 | The Transactions and Query | 95 |
| 12.2.2 | Putting Everything Together | 97 |
| 12.3 | Advanced Features | 98 |
| 12.3.1 | Mirrors | 98 |
| 12.4 | Conclusion | 99 |
| 12.4.1 | Lessons | 99 |
| 13 | Closing | 101 |
| 13.1 | Beyond this Book | 102 |
- Log in to post comments