2011-08-08 8 views
2

SQL文を作成できるJavaライブラリがありますか? "文字列操作"レベルで何か派手なものを探しているわけではありません:私はjdbc(PreparestatementとResultsets)を使用していますが、実際にはSQLコードを含む巨大な文字列を渡すのは嫌いです...SQL文を書くJavaライブラリですか?

私が必要とするのは、「シンプルな」Selectクラス(または同様のもの)です。私の心の中で私が本当にしたいすべてはたぶん私は盲目だが、私はそのような何かを見つけることができない...明らかに

SQLStatement stat = Select("*").from("table").where("condition and condition").orderby("something"); 
ResultSet rs = Connection.getResultSet(stat.toString()); 
/* equals to "select * from table where condition and condition order by something" */ 

を行うことができるようにすることです、私のことができるいくつかのメソッド/クラスをしたいですinsert sおよびupdate sおよび他のものを書く...

私は二つの理由オームズ除外:それは「古い」だと私はそれを変更することはできません、と私はどのようにわからない

  1. デシベルスキーマをできるORMがモデルを変更する必要があります(おそらくインターフェイスを実装する必要があるかもしれません)。私のプロジェクトのモデルは大きく、古くてひどいです。
  2. Onestly私はORMsが本当に好きではありません:オブジェクトとセット理論はマップされていません(IMHO)
+0

なぜORMを使用しないのですか? ** ['plenty !!!'](http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#Java)** – Nishant

+0

これが存在しない理由は恐らく2つあります。 )文字列の連結を意味のあるメソッド名に置き換えることは、*多くの利得とbではありません。最初に文字列操作を使用して完全な選択を行うべきではありません(**特に**は条件ではありません)。 –

+0

面白い、先週私は同じ考えを持っていた! :) –

答えて

2

ORM(オブジェクト関係マッピング)ライブラリが手掛かりです。

Hibernateは最も成熟したものです。

そして、Hibernate-s Criteria APIは、あなたが望むようにそのようなクエリを作成するためのオブジェクト指向の方法です。 Criteria API doc.

+0

+1。 Hibernateの 'Criteria'は、 ' createCriteria(Stuff.class).add(Restrictions.eq( "property"、propValue))のようなクエリを書くことを可能にします。addOrder(Order.asc( "name")) ); ' – Vlad

+0

ええと、私は' Criteria'のドキュメンテーションをスキップしています。それは私が望むものに見えます。ちょうど...なぜ彼らはSQLに似たAPIを使わないのですか? –

+0

@Vito:SQLと多少似ているHQLをサポートしていますが、プログラムで基準を構築することで、上記の利点がすべて得られます。 –

1

あなたが探しているのはおそらくハイバーネーションです。これには多くの高度な機能が含まれていますが、SQL文はより簡単です。

は、自分のサイトを見てみましょう:http://www.hibernate.org/

また、私は、このガイドを介してスキミングをお勧めしたい:

https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java

+1

私はこの答えを二番目にします。 Hibernateはあなたが探しているものと正確に同じかもしれません。これは、すべてのデータベーステーブルとリレーションシップをJavaクラスとしてマップします。このクラスは、プログラムに大量のSQLコードを入れる代わりに、標準のJavaメソッドでメソッド呼び出しによって便利に使用できます。 –

0

JavaをネイティブアプリケーションまたはWeb用に使用するかどうかはわかりません。 ウェブでJavaを使用している場合は、Play frameworkの使用を検討することができます。

簡単に、Hibernateには本当に簡単な実装が含まれています(自分でHibernateを実装する方が簡単です)。

1

SQLBuilderプロジェクトを試してください。正直なところ、私はこれを使用していません。彼らのドキュメントを見ると、あなたの要求に合っていると思います。

また、ソースフォージ、Googleコードなどで同様のAPIを検索することもできます。

関連する問題