依存性注入を使用して Objectify DAO を実装することを考えています。これにより、同じ "Dao" にアクセスするコードを維持できるようになりますが、実装は Objectify から Hibernate-MySQL または MongoDb に変更される可能性がありますが、コードの変更を心配する必要はありません。 UI またはクライアント側。
UserDao は、次の例に基づいています: http://turbomanage.wordpress.com/2010/01/28/simplify-with-objectify/
UserObjectifyDaoImpl implements Dao<User> {
private UserDao dao = null;
public void put(User entity) {
if (dao == null) {
dao = new UserDao();
}
dao.put(entity);
}
// other put and set methods
}
そのように、私は持っていcontext.xmlます:
<bean id="userDao" class="com.example.server.daoimpl.UserObjectifyDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
実装を変更する必要がある場合は、この BeanUserObjectifyDaoImplを次のように変更するだけです。
UserHibernateDaoImplまたはUserMongoDBDaoImpl、任意の実装を任意のデータベースに保存します。
そして、次のように、UI / クライアントにコードをそのまま残します。
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Dao dao = (Dao) ctx.getBean("userDao");
dao.put(something);
今すぐこれを行う必要がある理由の 1 つは、(objectify を介して) アプリ エンジンを使用して開発する必要があることですが、将来的には、一部のデータ アクセス オブジェクトを休止状態に変更し、一部を mongodb に変更する必要があるかもしれません (そのため、混在しています)。
このコードをテストしていませんが、この戦略は機能しますか?