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