2012-03-12 17 views
1

私は休止状態にして新しく、飛行中にデータベーステーブルを作成する必要があります。つまり、UIからユーザーのテーブルの詳細を取得することになります。テーブルの属性(カラム)の数を5人程度に制限することができます。Hibernateを使って動的にデータベースにテーブルを作成するには?

私は休止状態に関するさまざまなチュートリアルを終えました。私はテーブルを作成できますが、そのためには事前にクラスが必要です。しかし、私の場合、すべてがダイナミックになるでしょう。

JDBCと比較すると、CREATE TABLEクエリを直接実行し、テーブルパラメータをJavaコードのクエリに渡すことができます。

私のWebアプリケーションは、REST Webサービス、Spring 3フレームワーク、およびMySQLをデータベースとして使用します。

任意のチュートリアルのリンクやサンプルコードは本当に参考になる

おかげ

答えて

0

これは、あなたが聞きたい答えではないですが、私はHibernateが実行時にテーブルを作成することはできません怖いです。別の方法として、キー値テーブルを実装し、それをユーザーテーブルに関連付けてそこに属性を格納することもできます。それはどのように通常行われます。

+0

本当に!それでは、どのように私の仕事を達成する必要がありますか – Dhruv

+0

@Dhruv:最後に私の答えを読んでください。 – wintersolutions

0

Apache CouchDBを見てください。それはあなたの場合に適しているように見えます。コードを使用して新しいテーブルを追加することで、問題を招いています。プロダクション環境ソリューションの場合は、再考することを謙虚にお勧めします。あなたはコードを使ってDBAのことをしたくありません。

1

create()のクラスを持つSchemaExportクラスを使用して、与えられたhibernateマッピングファイルのセットからテーブルスキーマ作成スクリプトを生成し、次にこれらのスクリプトを実行することができると思います。

ユーザが入力した情報に従って実際にハイバネートマッピングXMLを作成し、このXMLをSchemaExportオブジェクトに渡されたConfigurationオブジェクトにフィードする必要があります。何かこれが好きです:

Configuration config = new Configuration(); 
// mappingClass.xml is generated according to the information entered by user 
config.addResource("mappingClass.xml"); 

SchemaExport schemaExport = new SchemaExport(config); 
schemaExport.create(true,true) 
+0

ありがとう、私は少なくとも.csvをアップロードするか、または休止状態でファイルを解析する方法はありますか?これによって私はテーブルがフライで作成されることを意味する – Dhruv

+1

私はそれができないと思う休止状態は、あなたの.csvの形式を理解していないまたはExcelファイル。ハイバネートが理解できる形式に変換する必要があります。これは、ハイバネートマッピングXMLです。 –