はじめモデルを持たないテーブルからデータを取得するにはどうすればよいですか?
私はプロジェクトに取り組んでいると私は多分ActiveJDBCがために意図されていない奇妙なユースケースに直面し、このプロジェクトでは、多くの物事が私のコントロールに含まれていないので、私は忍耐を誓う:
私は10〜15個の小/中規模データベース(それぞれ〜30個のテーブル、最大40000個のレコード)を持っており、それらの大半は15個のテーブルの「コア」スキーマを共有しますが、同時に各データベースに固有のいくつかの特定のテーブルがあります。すべて私がアクセスできないレガシーシステムによって維持されています。
ゴール
私たち(私といくつかのコンレイデス)は「convoluntedデータウェアハウス」の種類のデータを一元管理する必要があります。残念なことに、ActiveJDBC以外のテクノロジーは使用できません。私たちが書き込む必要があるものは他にありません。(私はMongoDBやLiquibaseでこれをうまく処理できることを知っています)
すでに接続を処理していますデータベース間で、プロジェクト自体はほとんどの場合うまくいっています。すべてのデータベースが共有しているコアスキーマを処理するプログラムの部分はすでに「機能しています」が、ユニークなテーブルには問題があります。
私はデータベースからすべてのテーブル名を実行時に作成されたクエリから取得します(私の選択でもありません)。私たちは、好ましくは
最後に、私の質問
が、私は、実行時にクエリからのデータを保持することができる、汎用/動的モデルまたは類似のものを作成することはできますか?最低でもクラスの数を維持する必要がありますか以下のようなもの:
Model a = Base.findall("select * from ?", TableName)
または
Model a = Model.fromTable(Tablename)
私はそのようにモデルを使用することが奇妙である知っているが、我々は表のデータをそのように取得することができればそれはそんなに私たちの生活を簡素化します。
この種類のモデルを使用して、ほとんどの場合、テーブルから「生の」データを取得し、インターフェイスを満足させるため、今は各テーブルの関係について心配する必要はありません。アドバンス
@Editで
ありがとう:この素晴らしいツールのためにあなたのイゴールをありがとう!
ちょっと(ほとんど)!ありがとうございました。私たちは "コアスキーマ"のために同様のアプローチを使用していましたが、ちょっと光りました。
私がコメントしたよう:それはモデルだったよう
我々はBase.findall(の結果を使用する必要がある)、それは可能でしょうか?
追加のミニ質問:base.findallに何らかの方法で "where()。limit()。offset()"を使用できますか?私はfindAll()が生のSQLクエリを取るので、結果を – LouizFC
というようにデータベース内で処理した後に、フィルタリングする必要があります。 'db.findAll(" first_name "first_name"をfirst_name limit 10 offset 50で注文してください) " – ipolevoy
@LouizFC、良い言葉をありがとう!あなたのもう一つの質問には:「Model.Findall()の結果をモデルと同じように使用する必要がありますか?」 'Base#find'メソッドの結果は、マップまたはマップのリストです。キーはデータベースからの選択です。値は、JDBCドライバがデータベースのJava型へのマッピングに従って返す値です。したがって、Baseからの結果はモデルではありません。しかし、私が示したように、それらの結果を簡単にモデルに変換することができます。 – ipolevoy