0

私は次のように機能する小さなコードを書きました:

  1. 入力ファイルを読み取る
  2. AAAその最初の行を読んで、特定の位置に値があるかどうかを確認します
  3. 条件を満たしている場合は、メソッドinsertAAAmethodを呼び出し、データをoracleテーブルにロードします
  4. 挿入クエリが異なるレコードBBB呼び出しの場合は、次の行を読み取りますinsertBBBrmethod

insertAAAmethod問題は、入力ファイルに15の異なるレコードがあるため、それぞれが異なる挿入クエリを持つ15の異なるメソッドがあることです。

public static void insertAAARecord() throws Exception {

    String sqlQuery = "insert into my_table(ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG)"
            + "values (?,?,?,?,?,?,?)";

    try {

        pstmt = conn.prepareStatement(sqlQuery);

        pstmt.setString(1, "AAA");
        pstmt.setDate(2,
                StringtoDate("AAA", CurrentLine.substring(150, 158)));
        pstmt.setDate(3,
                StringtoDate("AAA", CurrentLine.substring(158, 166)));
        pstmt.setString(4, CurrentLine.substring(24, 34));
        pstmt.setString(5, CurrentLine.substring(37, 45));
        pstmt.setString(6, CurrentLine.substring(147, 150));
        pstmt.setDate(7, headerDate);

        pstmt.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace(System.out);

    } finally {

        pstmt.close();

    }

}

SQLクエリをJavaコードから除外することは可能ですか?(たとえば、プロパティファイルのように)

注:挿入クエリは、レコード'AAA'の場合はレコードごとに変更され、レコードが異なる場合は1つの挿入クエリの後に続く必要があります。挿入クエリは変更する必要があります。

コードを最適化する方法を教えてください。

4

4 に答える 4

2

はい、すべてのクエリを含むプロパティファイルを作成し、起動時にプロパティオブジェクトを使用してそれらをロードしてから、プロパティを使用してそれらを検索する必要があります。Springを使用して、構成オブジェクトにクエリを挿入することもできます。

私は常にコードをDBデータに統合するDBオブジェクトを構築しており、クエリはそこに保持されています。必要なものがすべて1か所にあるため、デバッグと管理がはるかに簡単です。

生活をシンプルにし、ORMを避け、SQLクエリを調整します(または、DBAにそれを行わせ、それが得意です)。ただし、SQLが気に入らない場合や、SQLの効率を気にしない場合は、HibernateのようなORMが必要になる可能性があります。

于 2013-02-13T17:00:44.170 に答える
1

これには他のアプローチよりも時間がかかるかもしれませんが、コードの最適化に役立ちます。

すべてのクエリ/プロセスには共通の属性があります。

  • SQLクエリ
  • 文字列パターン
  • パラメーター

各パラメータには

  • ポジション
  • データ・タイプ

すでにSpringを使用している場合は、config.xmlでこれらをBeanとして定義できます。そうでない場合は、とにかくxml構成を使用できます(プロパティファイルの代わりに)

次に、これらのBeanを解析してカスタムクエリを作成するためのクラスを作成する必要があります。

それが役に立てば幸い。

于 2013-02-13T18:14:44.417 に答える
0

Hibernate / JPA、IbatisなどのORMフレームワークを使用してみてください。

于 2013-02-13T16:44:22.403 に答える
0

JPAを使用したい。次のような簡単なJPAチュートリアルを実行することをお勧めします:http://glassfish.java.net/javaee5/persistence/persistence-example.html

このチュートリアルでは、オブジェクトを作成または変更し、それらの変更をデータベースに永続化する方法の基本を示します。幸運を。

于 2013-02-13T16:58:01.293 に答える