0

独自の API を使用してアプリを構築しています。データベースに接続するには、Connection オブジェクトを返すメソッドを使用し、その接続で適切なメソッドを呼び出してデータベースに対してクエリを実行します。たとえば....

Connection conn = JdbcServiceFactory.getInstance().getDefaultDatabase().getConnectionManager().getConnection();

PreparedStatement ps = conn.prepareStatement("select * from test");

次のプロジェクトで Spring MVC 3 を使用することを選択した場合、データベース接続をセットアップするにはどうすればよいですか? ドキュメントで確認したところによると、コンテナーで datasource タグを使用し、URL、ユーザー名、およびパスワードを渡しています。示されているように、現在、接続を取得するためにそれを行う必要はありません。

4

1 に答える 1

1

1日の終わりに、独自のAPIは、いくつかの資格情報を使用して、いくつかのデータベース(いくつかのサーバーで利用可能)にアクセスする必要があります。あなたはこれを見ないだけです。Springでは、最初にいくつかを定義する必要がありますDataSource、bonecp、の既存のライブラリを使用するか、 を介してアプリケーションサーバーから提供されたライブラリを使用します。インターフェイスを実装している限り、どのアプローチを選択してもかまいません。それぞれを詳細に説明するには多すぎます。DataSource

DataSourceBeanを設定したら、JDBCコードを大幅に簡素化する方法を使用することを強くお勧めします。例:JdbcTemplate

 List<Map<String,Object>> res = jdbcTemplate.queryForList("select * from test");

...そしてもっとたくさん。

更新:既存のレガシーAPIを最新のフレームワークDataSource(ほとんどすべて)で使用する場合、DataSourceアダプターの実装は簡単です(残りのメソッドは実装されないままで、スローされる可能性がありますUnsupportedOperationException):

public class LegacyDataSourceAdapter implements DataSource {
    @Override
    public Connection getConnection() throws SQLException {
        return JdbcServiceFactory.getInstance().getDefaultDatabase().getConnectionManager().getConnection();
    }

    @Override
    public Connection getConnection(String username, String password) throws SQLException {
        return getConnection();
    }

    //other methods are irrelevant
}

LegacyDataSourceAdapter次に、 (おそらくSpring Beanとして)のインスタンスを作成し、それをJdbcTemplateHibernate、myBatisに渡します...


ところで、ここに悪いAPI設計のいくつかのファーストクラスの例があります:

Connection conn = JdbcServiceFactory.
  getInstance().
  getDefaultDatabase().
  getConnectionManager().
  getConnection();
于 2012-07-31T16:15:10.930 に答える