第四章 persistencecapable
4.1 jdo增强者 【程序编程相关:DropDownList 控件 Data】
在jdo里,所有自定义的持久类都必须实现javax.jdo.spi.persistencecapable接口.这个接口包含了一些复杂的方法,使jdo能够管理类实例的持久性字段.幸运的是,你不必亲自实现这个接口,实际上,编写一个持久类与编写普通的类没有分别.没有特别的类需要继承,不必使用特殊的字段类型,不必写特殊的方法.这也是jdo使持久性对开发者来说完全"透明"的重要体现. 【推荐阅读:两个delphi下遍历指定目录下指定类型】
为使你免受错综复杂的persistencecapable 接口的困扰,许多jdo的实现品提供了一个名为"增强者"的工具.增强者是一个这样的工具:你编写持久性的类,然后增强者会自动增加代码到你的类里.虽然一些厂商会用源代码增强者修改你的java代码,但是通常来说,增强者主要在.class文件上起作用.java编译器编译你的文件,生成字节代码,增强者处理这些代码.增加一些必要的字段与方法来实现persistencecapable 接口.修改后的java字节代码按照堆栈顺序完美的保留,并且完全兼容于java调试器.所以增强的操作并不影响调试. 【扩展信息:TAdoQuery导出数据到Excel】上图描述了一个持久性类的编译过程.典型的jdo实现品会包含一个ant的增强task,所以你可以把增强作用作为编译的一部分,自动进行.
所有jdo增强者都要求做到彼此之间字节兼容.这意味着经过"增强"的类不但能用于增强这个类的jdo实现品,而且能用于所有其他jdo实现品.字节兼容的特性要求确保你在包装你的持久类之后,你可以分发给其他开发人员使用,而不用担心他们使用的是哪个厂商提供的jdo实现品.这也意味着你选择某个厂商的jdo之后,不必重新编译你的持久类.
4.2 比较"能持久"的与"该持久的"
已增强的实现了persistencecapable 接口的类可以归为"能持久的".直接访问能持久类的public或者protected持久性字段的类称为"该持久的".该持久的类也必须"增强"--每次当该持久的类直接访问能持久类的持久字段的时候,增强者增加些代码,通知jdo实现品正被访问的字段将要被读或者写.这可以使jdo实现品能根据数据的需要同步字段的值.除非该持久类也是能持久类,否则增强者不会增加代码使之实现persistencecapable 接口通常,除了有利于封装状态的标准参数,最好使你所有的持久字段都是public,如果是protected,则保证他们只被持久的子类访问.这样可以避免这种情况:当非持久类访问能持久类的字段时,到底哪个非持久类应该被增强为"该持久的".
4.3. 持久类的限制
... 下一页