我应该在这种情况下使用反射吗?

时间:2013-01-31 00:21:10

标签: java database reflection map

我有一个代表计算机部件(特别是RAM模块)的类,其中包含名称,品牌,价格和容量等属性。它需要有一个方法将自己的数据插入数据库。我希望它将所有属性插入到数据库中,除非该属性为null。最好的方法是循环执行包含数据库列的String标题的Map以及获取对象的相应属性的方法吗?这是我第一次使用反射,所以如果这实际上是最好的方法,那么我们将非常感谢一段示例代码。

提前致谢, 本

2 个答案:

答案 0 :(得分:1)

没有。你真的在谈论序列化问题而不是持久性问题。持久性维护具有预定义属性的实体的概念,这些实体映射到db中的列。如果您要发现属性,那么基本上就是序列化对象。

使用反射执行此操作的问题在于,当您开始拥有可能包含循环的对象图形(指向已经遇到的节点的对象)时,它会变得非常复杂。

另一种选择就是拥有一个简单的属性映射协议,就像Cocoa一样:每个对象类型都知道如何编码自身,然后自己解码,但是来自编码器或解码器,它与格式无关。因此,如果您现在使用XML为50个不同的实体执行此操作,那么稍后您可以在不更改任何实体代码的情况下支持JSON。

答案 1 :(得分:0)

有些框架已经实现了你想要的东西:)看看:http://en.wikipedia.org/wiki/Object-relational_mapping 对于一些概念:

我建议你看一下playframework附带的Ebeanhibernate都可以做你想要的。