最近、c言語でsqlite3を使用しています。誰かがcの便利なORMを教えてもらえますか?自分のプロジェクトのためにORMメカニズムを開発する必要はありますか?
3 に答える
ORMが必要な場合は、データベースにマップすることを念頭に置いて、ある種のビジネス/ドメインオブジェクトモデルがあることを示唆しています。
その場合、システムプログラミング(C)に最適な言語でビジネスアプリケーションを作成しようとしていることに気づきます。これが優れたアーキテクチャ戦略であるかどうかを検討することをお勧めします。
さらに、ORMが次のような言語に適しているとは思われません。
- それ自体はオブジェクト指向ではありません
- 多くのORMスキームの中心となる傾向があるメタプログラミング/リフレクションをあまりサポートしていません
最後に、ORMはいずれにせよアンチパターンであると信じている人はたくさんいます。(例、例、例)
全体として、私の提案は次のいずれかになります。
- Cを使い続ける予定がある場合は、ORMを完全に避けてください
- ORMが少なくとも十分にサポートされ、パラダイムに適合する言語/プラットフォームに切り替えます(最も明らかにJava)
私はこのライブラリを「ORMforC」として作成しました。
サンプルコードは次のようになります。
typedef struct person {
int id;
char *name;
} person;
void find_by_name(isti_db *db, const char *text, person** result) {
corm_person_select *s;
corm_person_select_alloc(&s, db);
s->name(s, "like", text)->_go_one(s, result); // populate result from the database
s->_free(s, 0); // in "real" code, 0 is a chained status value
}
残念ながら、それは(私が知る限り)どこでも使用されておらず、経験豊富なcプログラマーが奇妙だと思うかもしれないかなりの数のアイデアが含まれています。しかし、それは放棄されたわけではありません。私はまだこの問題に興味を持っており、いつかこの問題に取り組み続けることを望んでいます。
簡単なグーグル検索はこれを思いついた:http://ales.jikos.cz/smorm/
私はそれを使ったことがないので、それがあなたのすべてのハードドライブを再フォーマットし、あなたの冷蔵庫をあなたのミルクを台無しにするのにちょうど十分に暖かくするなら私を責めないでください、しかしあなたが本当に書きたくないならそれは何もないより良いかもしれませんクエリ。