我有一个表示计算机部件(特别是 RAM 模块)的类,其中包含属性,例如名称、品牌、价格和容量。它需要有一种将自己的数据插入数据库的方法。我希望它将其所有属性插入数据库,除非该属性为 null。执行此操作的最佳方法是遍历包含数据库列的字符串标题的 Map 以及获取对象相应属性的方法?这是我第一次使用反射,所以如果这实际上是最好的方法,那么示例代码片段将不胜感激。
提前感谢,本
No.您实际上更多地谈论的是序列化问题,而不是持久性。持久性维护实体的概念,这些实体具有预定义的属性,映射到数据库中的列。如果您只是要发现属性,那么您基本上是在序列化对象。
使用反射这样做的问题在于,当您开始拥有可能包含循环的对象图(指向已经遇到的节点的对象)时,它会变得非常复杂。
另一种选择是只使用一个简单的属性映射协议,就像 Cocoa 所做的那样:每个对象类型都知道如何对自身进行编码,然后自行解码,但来自与格式无关的编码器或解码器。因此,如果您现在在 XML 中为 50 个不同的实体执行此操作,那么以后想要支持 JSON,则可以在不更改任何实体代码的情况下执行此操作。
一些框架已经实现了您正在寻找的内容:)看看 : http://en.wikipedia.org/wiki/Object-relational_mapping对于某些概念:
我可以建议你看看Playframework附带的Ebean,休眠两者都能做你正在寻找的事情。