私はObjective DAOを依存性インジェクションで実装することを考えていますが、実装はObjectifyからHibernate-MySQLまたはMongoDbに将来変更されるのに対し、同じ "Dao"私はUIやクライアント側のコードを変更することを心配しています。SpringでDAOを実装する
UserDaoは、ここでの例に基づいています。 、私はcontext.xml
を持っていることを、このような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
}
:
<bean id="userDao" class="com.example.server.daoimpl.UserObjectifyDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
そして、私は実装を変更する必要がある場合、私はちょうど変更する必要がありますこの豆はUserObjectifyDaoImpl
から次のようなものになります。
UserHibernateDaoImpl
またはUserMongoDBDaoImpl
、またはどのような実装であれ、どのデータベースに保存してもかまいません。
そして、まだ無傷でUI /クライアントに私のコードを持っている、のような:私は今、この権利を行う必要があり
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Dao dao = (Dao) ctx.getBean("userDao");
dao.put(something);
一つの理由は、私は(客観経由)アプリのエンジンを使用して開発する必要がある、しかし、中将来私は一部のデータアクセスオブジェクトを休止状態に変更し、一部をmongodbに変更する必要があるかもしれません。
このコードはテストしていませんが、この戦略は有効ですか?
これは動作します。あなたは大統領ですが、春のデータは良い方法ですが、SQLのみです。spring-data-mongodbは現在他のデータソースでは使用できませんhttps://jira.springsource.org/browse/DATAMONGO-389、https://jira.springsource.org/browse/DATAJPA-146 – iddqd
@iddqd:Nice ..しかし、私はOPが1つの実装から別の実装に完全に切り替えると同時に、それらを使用しないと考えています。 –
"私は今これを行う必要がある理由の1つとして、オブジェクトエンジンを使用してアプリケーションエンジンを使用して開発する必要がありますが、将来は一部のデータアクセスオブジェクトを休止状態に変更し、一部をmongodbに変更する必要があります。 " – iddqd