問題タブ [jooq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
open-source - 私のオープンソース ライブラリは安定しています。ではどうやって注目を集めるか?
私は最近、Java で書かれた主要なオープン ソース ライブラリの開発を安定化させました。その後、サーバー側で記事を公開しました。これにより、多くの肯定的な (しかし批判的で建設的な) フィードバックが寄せられました。そして、最初の貢献者です。これは素晴らしいことです。
- こちらの記事を参照してください: http://www.theserverside.com/discussions/thread.tss?thread_id=61162
- ライブラリ: http://jooq.sourceforge.net
このような良いフィードバックのおかげで、私は自分のプロジェクトについて、有用で独創的なものを作成しているという意味で、非常に満足しています。私のプロジェクトの背後にあるいくつかの重要なアイデアと、それが独創的だと思う理由:
- or-mapper です。OK、それは本当にオリジナルではありません... ;-)
- その中にコード生成があります。OK、まだオリジナルではありません。しかし、それは常に素晴らしいです。
- 独自のドメイン固有言語を使用して、Java で型安全なクエリを作成できます。その方がいいです。文字列連結なし。JPA は最近、Hibernate から基準クエリをコピーしたばかりです。
- 複雑な結合、ネストされた選択、ユニオン、エイリアシングなどを含むすべての SQL 機能でこれを行うことができます。OR マッパーは、RDBMS の背後にあるリレーショナル データ モデルを無視しようとする傾向があります。
- UDT、ストアド プロシージャ、ネイティブ関数など、あらゆる種類のネイティブな非標準機能をサポートしています。それを行う or-mapper は知りません。
これらの重要なアイデアは、非常に特定のタイプの開発者に役立つと思います。その特定の開発者
- Java と巨大なレガシー データベースとのインターフェイスを提供します。
- SQL をよく知っており、広く使用したいと考えています。
- 新しい言語 (HQL、JPQL など) を学びたくない
- 洗練された XML 構成の微調整に 1 分も費やしたくありません。
- 彼のソフトウェアはデータベースと密結合しているため、SQL の抽象化はほとんど必要ありません。Hibernate や JPA の担当者が無視しているように見えるものです。
- EDIT : データベースにアクセスするには、強力だが軽量のライブラリが必要です。たとえば、モバイル デバイス用に開発する場合 (SRM のコメントを参照)。
さぁ、激務の始まりです。注意を引く方法は?どうすればより多くの観客を獲得できますか? 私のプロジェクトが関連性を持つにはどうすればよいですか? その「特定のタイプの開発者」に到達するにはどうすればよいですか?
java - Oracle パッケージと Java パッケージ間のマッピング
データベース インターフェイス ライブラリjOOQで、Oracle (または DB2 など) パッケージのサポートを追加したいと考えています。すべてのストアド オブジェクトが生成された Java クラスとしてモデル化されるストアド プロシージャ/関数のサポートを既に実装しています。たとえば、このストアド関数
次のように使用できるクラスを生成します (便利なメソッドもたくさんあることに注意してください。この例は一般的な設計を示しているだけです)。
マッピングSQL 関数-> Java クラスを選択した理由は、ストアド プロシージャが複雑な戻り値 (複数の OUT または IN OUT パラメータ) を許可し、プロシージャを呼び出した後に 1 つずつ取得できるようにするためです。
現在、この設計は、オーバーロードが不可能なストアド関数/プロシージャで正常に機能します。ただし、Oracle (または DB2) のパッケージ内では、次のような同じ名前の関数をいくつか持つことができます。
関数 (またはプロシージャ) ごとにクラスを生成すると、いくつかのFAuthorExists
Java クラスと名前が衝突します。不十分な解決策は、クラス名に , などのインデックスを追加することFAuthorExists2
ですFAuthorExists3
。別の不十分な解決策は、パラメータ名/型からある種のハッシュ値 (または値自体) を生成して、 , などのクラス名に直接入れることFAuthorExistsVARCHAR2
ですFAuthorExistsVARCHAR2VARCHAR2
。明らかな理由から、どちらのソリューションも望ましくありません。
誰でもこの問題の簡単な解決策を持っていますか? それとも、そのような関数名のオーバーロードの問題を引き起こさない、より良い全体的な設計のアイデアでしょうか?
フィードバックをいただければ幸いです。
java - JOOQと春
Spring フレームワークで JOOQ を使用しようとした人はいますか?
java - java.sql.ResultSet、CallableStatement、SQLInput への共通インターフェースなし
こんな状況です
jOOQでは、JDBC を抽象化する必要がたくさんあります。一部のデータは単純な ResultSet から取得され、一部のデータは SQLInput (UDT の場合)、または CallableStatements (ストアド プロシージャ/関数の場合) から取得されます。したがって、これらの JDBC タイプに抽象化を追加したいと思います。
現在、それらはすべてほぼ同じように機能します。通常、のすべてのデータ型に対してget
andメソッドがあります。たとえば、次のような方法で出荷されますset
java.sql.Types
そして、それらはすべて次のようなメソッドを持っています
問題
残念ながら、これらの JDBC インターフェイスは単一の共通インターフェイスを拡張するものではなく、このスニペットのような一般的な JDBC コードを記述したい人にとっては簡単です (私の質問をサポートするための単なる例です)。
ResultSet
上記のコードは、 、CallableStatement
、の 3 つすべてに対して記述する必要がありますSQLInput
。そして、似たような例がたくさんあります
私の質問は
- この問題をエレガントに解決する JDBC 拡張ライブラリを知っている人はいますか?
- それとも、これらすべてのタイプの単純なラッパー クラス (またはアダプター) を自分で作成する必要がありますか?
- それとも、その事実を受け入れて、内部ライブラリ コードを複製し続けますか?
どのソリューションを好みますか、またその理由は何ですか? フィードバックをお寄せいただきありがとうございます
sql - DB2でネストされた構造化タイプ(UDT)を使用するにはどうすればよいですか?
DB2を使用してネストされた構造化タイプ(UDT)を使用しようとしていますが、いくつかの問題が発生しました。
以下は、ユースケースの型、テーブル、関数、および変換を作成するためのSQLステートメントです。すべてのステートメントは正常に実行されますが、単純な実行を試みるとエラーが発生します
select * from t_author
。
次のエラーが発生しますselect * from t_author;
:
私が間違っていることについて何か考えはありますか?
DB2 v9.5(Linux)を使用しています。
java - オープン ソースの Java 永続性ライブラリをサポートする必要がある他の RDBMS
JDBC の上に構築された Java 永続ライブラリであるjOOQの新しいバージョンをリリースしています。現在、次の 7 つの RDBMS をサポートしています。
- オラクル
- MySQL
- ポストグル
- H2
- HSQLDB
- DB2
- SQLite (実験的)
jOOQ では、幅広く堅牢な RDBMS サポートを提供したいと考えています。これは、統合テストで堅牢性を提供するために、かなり厳選する必要があることを意味します。同時に、重要なデータベースをサポートするエンド ユーザーのニーズを満たす必要があります。エンド ユーザーはデータベースに大きく依存していると思います。jOOQ は OR マッパーではありません。逆に、jOOQ はストアド プロシージャなどのベンダー固有の機能を採用しているため、基盤となるデータベースは私にとって非常に重要です。
次のリリースでは、RDBMS サポートをさらに追加したいと考えています。例えば:
- MSSQL
- ダービー
あなたは何を提案しますか、そしてその理由は何ですか? 客観的な根拠に基づいて説明し、参考文献を引用してください。
更新:
次の RDBMS がサポートされるようになりました。フィードバックをありがとう
- キューブリッド
- ダービー
- アングル
- SQLサーバー
- Sybase (SQL Anywhere と ASE の両方)
sql - Jooqを使用して数値ベースでvarcharフィールド(数値を持つ)でクエリをソートします
varchar フィールドをソートするにはどうすればよいですか。ID を varchar として取得し、数値でソートしたいと考えています。
を使用してSQLでこれを行うことができます
私がJooqに持っているのは
java - Jooq で他のカスタム (concat、sum、count) 列を使用してデータベースからすべての結果列を取得する方法
6列のテーブルTable1があります。
これが、マップする必要があるSQLステートメントです。
これで、SQL クエリの結果は 7 列になります (6 つの Table1 列と 1 つの IdCount 列)。しかし、このクエリでJooqに同じものを実装すると、単一の列「IDCount」しか得られません。
今、結果のレコードセットには単一の列「IdCount」しかありませんが、必要なのはすべての列と1つの追加の列「IdCount」です。Jooq にも 7 つの列が必要です。
postgresql - postgresqlのJooqJooq構成jooq.propertiesからテーブルを生成できません
MySQLテーブルからJavaモデルファイルを生成しました。しかし今、私たちはPostgreSQLに切り替えており、そこで動作するためにすべてが必要です。そこで、PostgreSQL構成用の新しいjooq.propertiesファイルを作成しました。ただし、テーブルからモデルファイルは生成されません。
PostgreSQLのjooq.propertiesファイルは
コマンドラインで取得する出力は次のとおりです。
pgAdmin3のPostgreSQL情報は、pgsql-> databases-> ofbiz_olo-> Schemas->public->Tablesのようになります。