# uroboroSQLとは

uroboroSQLは2Way-SQLが利用可能なJava製のシンプルなSQL実行ライブラリです。

フューチャーアーキテクト (opens new window)社内にて、2006-2007年頃にS2Dao (opens new window)を参考に開発され、プロジェクトで実際に利用されて現在まで改善が続けられてきました。社内ではWebアプリケーションフレームワークや各種設計開発支援ツールと連携・統合される形で利用されています。

とはいえ、社内で秘伝のタレ化していることは否めず、開発フェーズでは開発パートナーさんからも「ググれない」から使い方がわからないいう声もちらほら。だったらOSS化してしまえということのが公開のきっかけです。

# uroboroSQLを使う理由

JavaからRDBにアクセスするとき、Java標準のJPA(Java Persistence API)の実装であるEclipseLink (opens new window)OpenJPA (opens new window)はもとより、歴史のあるORMとしてHibernate (opens new window)MyBatis (opens new window)Spring Data JDBC (opens new window)といったグローバルで使われているものもありますし、日本でよく使われてきたS2Dao (opens new window)S2JDBC (opens new window)DBflute (opens new window)Doma (opens new window)といったものもあります。

こういった数多のDB系ライブラリ・フレームワークの中で解決したい領域もそれぞれですが、uroboroSQLは主にSQL中心の設計コンセプトを採用しています。Javaを中心に考えてSQLを組み立てるという思想ではなく、SQLに足りないところをJavaで補うという思想です。

これはエンタープライズシステムにおいて、ORマッパーやクエリビルダでは実装しきれない、hint句による実行計画の指定や分析関数の利用など複雑かつDBプロダクト依存のSQLを使う場合に有効と考えています。

そのため、uroboroSQLはSQLは2Way-SQL方式で記述ができるものの、ORMでよくあるエンティティクラスとリレーションをたどって遅延ロードして子エンティティを取得するなどの機能は有していません。(単純なエンティティクラスへのマッピングは提供しています)

その分、エンタープライズで培われたノウハウとして、区分値サポート、リトライ、フィルターによるカスタマイズなどの機能を充実させています。また、2Way-SQLのIF分岐に対してカバレッジを取れるようにするという、品質視点での機能があるのも特徴です。

SQLの能力を最大限活かしつつ、生産性と品質を高めたい

それがuroboroSQLの最大の関心事なのです。

# Further Reading

uroboroSQLの紹介 (OSC2017 Tokyo/Spring) from Kenichi Hoshi