
2026/03/06 4:08
**SQG(SQLからコードへのジェネレーター)** *Java ストリームとリスト型のサポートを追加しました*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
SQG v0.10.0 は、ストリームベースのクエリ結果を扱う Java サポートと、配列/リスト列の取り扱いを改善した型安全な SQL コードジェネレーターを拡張しました。
- Streams: 既存の
メソッドに加えて新しいList<T>
メソッドが追加され、大きな結果セットの遅延評価が可能になります。Stream<T>
は内部でStream
を保持しているため、try‑with‑resources を使って閉じる必要があります:ResultSettry (Stream<User> users = queries.getAllUsersStream()) { users.forEach(user -> process(user)); } - Array/List マッピング: SQL の配列列(
、TEXT[]
など)は、生成されるコードで Java のINTEGER[]
、List<String>
および同様の型に正しくマッピングされます。List<Integer> - DuckDB バルクインサート: リスト/配列列を持つテーブル(例:
)は、新たに生成されたアペンダーメソッドを通じてバルク挿入 API で書き込むことができます。tags VARCHAR[]
SQG はコンパイル時に注釈付き
.sql ファイルと実際のデータベースを照合し、TypeScript と Java の両方に対して型安全なアクセスコードを生成し続けます。ユーザーは npm install -g @sqg/[email protected] を実行するか、プロジェクトの依存関係を更新することでアップグレードできます。完全なソースは GitHub にあり、オンラインプレイグラウンドで開発者がすぐに試せます。この結果、DuckDB を利用する企業にとってより効率的で組み合わせやすい Java データベースアクセスとスムーズなデータ取り込みが実現します。本文
SQG は型安全な SQL コード生成器です ―
.sql ファイルに注釈付きクエリを書くだけで、ビルド時に実際のデータベースエンジンを照会して、TypeScript と Java 向けに強力に型付けされたデータアクセスコードを自動生成します。
v0.10.0 で追加された新機能
Java:ストリームベースの結果メソッド
生成される Java コードは、
List<T> に加えて Stream<T> を返すメソッドも含むようになりました。これにより遅延評価が可能になり、標準ライブラリとの組み合わせが容易になります。また、大規模な結果セットをメモリ上に一度に保持する必要がなくなるため、効率的です。
try (Stream<User> users = queries.getAllUsersStream()) { users.forEach(user -> process(user)); }
ストリームは内部の
ResultSet を参照しているため、使用後には必ず閉じる必要があります。したがって、上記のように try‑with‑resources ブロックで囲むことが推奨されます。
Java:配列/リストフィールドのサポート強化
TEXT[] や INTEGER[] などの配列カラムは、生成コード内で正しく扱われるようになりました。以前はこれらの型が不適切にマッピングされることがありましたが、現在では
List<String>、List<Integer> などへ正確に変換されます。
DuckDB:Appender におけるリスト型サポート
DuckDB の appender は、リスト/配列カラムタイプを扱えるようになりました。
たとえばテーブルに
tags VARCHAR[] カラムがある場合、生成された appender メソッドは対応するリスト型(List<String> など)を受け取り、DuckDB のバルクインサート API を使用して正しく書き込みます。
アップグレード方法
npm install -g @sqg/[email protected]
あるいはプロジェクトの依存関係を更新してください。
GitHub 上で完全なソースコードが公開されており、Playground でも試せます。
このアップデートについては Hacker News で議論してみましょう。