我有一个代表计算机部件(特别是RAM模块)的类,其中具有属性,例如名称,品牌,价格和容量。它需要一种将自己的数据插入数据库的方法。我希望它将其所有属性插入数据库,除非该属性为null。这样做的最好方法是遍历包含数据库列的String标题的Map和获取对象的相应属性的方法吗?这是我第一次使用反射,因此,如果实际上这是实现此目的的最佳方法,将感谢示例代码的片段。
提前致谢,
本
最佳答案
不。您实际上是在谈论序列化问题,而不是持久性。持久性维护具有预定义属性的实体的概念,这些实体已映射到数据库中的列。如果您只是要发现属性,则基本上是在序列化对象。
使用反射执行此操作的问题是,当您开始具有可能包含循环的对象图(指向已遇到的节点的对象)时,它将变得非常复杂。
另一个选择是像Cocoa一样拥有一个简单的属性映射协议:每种对象类型都知道如何进行编码,然后对自身进行解码,但是可以通过独立于格式的编码器或解码器进行。因此,如果现在以XML的形式针对50个不同的实体进行操作,那么以后希望支持JSON,则无需更改任何实体代码即可。