Dal*_*ton 1 java reflection dao hibernate
好吧,我的项目中有些东西困扰着我。我有很多 hibernate 实体类,每个类都有自己的 DAO(继承自 GenericDAO)。它们中的大多数没有特定的功能,只是一个继承 GenericDAO 的空类。
因为我相信那些是不必要的类,所以我决定使用反射来摆脱它们。经过一些编码后,我对除 GenericDAO 之外没有特定方法的所有类的调用都遵循以下设计:
DAO.forClass(MyClass.class, MyClassPK.class).genericDAOMethod();
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力。我现在摆脱了空的 DAO。但是在通过互联网搜索后,我发现像我这样的解决方案几乎没有,所以问题是:
这种方法在任何相当大的方面是错误的还是坏的?为什么从来没有人考虑过做这样的事情?
小智 5
反思几乎从未被视为问题的答案。它只是难以阅读,因为很多人不知道它是什么,而在您身后修改您的代码的人无法轻松理解它。使用 Code Complete 一书中的术语并不是“自我记录”。
反射很强大,因为你刚刚发现它是用来实现 DAO 的。但你应该厌倦它。我们在办公室里使用的一个术语是“代码臭味”,它可能是出于特定目的而存在的代码,但除非绝对需要,否则不应在任何地方使用。确保正确记录,以便真正支持你的人会知道这是什么鬼。
我喜欢用它在 Spring 中编写 jUnit 测试,以使用反射比较来自两个不同数据库的两个对象。但这是一个测试,实际上不在生产代码中。
希望这会有所帮助,并且正是您正在寻找的东西!
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |