現在、ORMレイヤーを使用してWebフレームワークを評価していますが、興味深い問題に遭遇しました。異なるデータベースを持つJavaEE(EJB3 / JPA)アプリケーションでID列を持つテーブルを使用しました。SAPDBでは、以前にOracleデータベースで行ったのと同じ方法で、シーケンスを定義し、jpaシーケンスジェネレータアノテーションを使用してそれを処理できました。SQL Server 2005に切り替えたとき、SQL ServerがID生成を処理する方法であるため、突然すべてをIDENTITYアノテーションに置き換える必要がありました。JPAがそれ以上の抽象化を提供しなかったことに少しがっかりしました。さまざまなデータベースを使用して遭遇する制限は、それだけではないと思います。
さて、私の質問です。たとえば、web2pyでは、auto_incrementインデックスを使用するようにすべてのテーブルを変更する必要があることを読みました。シーケンスジェネレーターまたはID列もサポートしていますか?他のWebフレームワークはどうですか?アプリケーションを複数のレガシーデータベースに移植できますか?つまり、テーブルの定義は、ID列と、文字列のデータ型定義のわずかな違いを除いて同じです(そこで、createステートメントを変更したことは覚えていますが、正確に何が必要だったかは思い出せません)。
IDの取得にも違いがあります。シーケンスジェネレーターでは、コミット前に生成されたIDにアクセスできますが、MySQLのauto_incrementではアクセスできません。