对于原始 java.util.Map,是否有类似这样的“对象哈希映射” ?
能够“映射”定制类(通常通过注释)以存储在原始映射中的基本思想:
Map<String,String> map = new HashMap<String,String>();
Class car = new Car(1, "Red");
Ohm ohm = new Ohm(map); // set the back-end map to use.
Car result = ohm.put(car); // persist annotated class
result = ohm.get(1); // get by id
result = ohm.get("color", "Red"); // get by property query
我问这个的一个原因是因为我开发了一个库,可以有效地将原始接口映射GAE Datastore
到原始Map
接口:
Map<String, String> map = Datastorecast.getMap("somemap");
无论如何,我一直在考虑如何在不重新发明轮子的情况下实现它:
- 使用 Google Gson 或 JSON.Simple 将 Object 序列化为 java.util.Map
- 序列化的另一种选择是 XStream
- 从那里将生成的地图复制到数据存储支持的地图容器
更新:
我实现了一种技术来实现这一点(Redis 风格):
Class car = new Car(1, "Red");
map.put("classname:com.mycompany.Car:uid:", car.getId());
map.put("classname:com.mycompany.Car:color:", car.getColor());
- 所以它只是一个注释类的问题,以便 OHM 类可以反映要放入地图的值。