問題タブ [hbm2ddl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 休止状態: hbm2ddl.auto=本番環境で更新?
hbm2ddl.auto=update
実稼働環境でデータベース スキーマを更新するように構成された Hibernate アプリケーションを実行しても問題ありませんか?
java - Hibernate hbm2ddl.auto 構成の可能な値とその機能は何ですか?
hibernate.hbm2ddl.auto
更新、エクスポート、および更新をいつ使用し、いつ使用しないかを知る必要があるに与えることができる値について、本当に知りたいですか? そして、代替手段は何ですか?
これらは、DB で発生する可能性のある変更です。
- 新しいテーブル
- 古いテーブルの新しい列
- 列が削除されました
- 列のデータ型が変更されました
- 列のタイプがその属性を変更しました
- 削除されたテーブル
- 列の値が変更されました
それぞれの場合、最善の解決策は何ですか?
mysql - hibernatetool Ant タスク内で JNDI リソースを見つける方法
Ant を使用してデータベース スキーマを生成したいと考えています。hbm2ddl タスクを使用しています。
JNDIでHibernateを使用しています。私の hibernate.cfg.xml は次のようになります。
私の $CATALINA_HOME/webapps/myapp/META-INF/context.xml は次のようになります。
$CATALINA_HOME/webapps/myapp/WEB-INF/web.xml 内には、次のものがあります。
build.xml内には、次のターゲットがあります。
問題は、ant が context.xml に格納されている Resource 要素を見つけられないことです。
クラスパス要素内にnexスニペットを追加しようとしましたが、成功しませんでした。
context.xml で定義されたリソースを Ant に見つけさせるにはどうすればよいですか?
完全なエラー スタック トレースを投稿します。
hibernate - Hibernate Validator: hbm2ddl によって無視される EmbeddedId 制約
ここでかなり具体的な質問ですが、1日私を悩ませています.PostgreSQL
8.3でHibernate Core、Annotations、Validatorを使用しています。
次のクラスをセットアップしています。
PostgreSQL データベース (@Embeddable ではなく @Entity 内の他のフィールドで機能している) の長さ制約に変換された長さ制約を確認したいのですが、機能したくないようです.
代わりに @IdClass を使用しても@EmbeddedId を削除し、@Entity の一致するフィールドに長さ制約を適用しても、この問題は解決されませんでした。データベース フィールドはまだ varchar 255 です (私のニーズには約 250 が大きすぎます)。
このレベルの詳細を気にするべきではないと言う人もいるかもしれませんが、私の OCD 側はそれを手放すことを拒否しています.. ;) EmbeddedId 内で Hibernate Validator Annotations を使用し、hbm2ddl に制約をデータベースに適用させることは不可能ですか?田畑?
hibernate - hibernate hbm2ddl.auto = updateの使用:値を必要としないように列を変更するにはどうすればよいですか?
以前はnot-null="true"であったプロパティがありました。そのフィールドの値はもう必要ないので、not-null = "false"に変更しましたが、データベースでテーブルが更新されません。新しいプロパティを追加しても問題はありません。
hbm2ddl.auto = updateがテーブルを自動的に変更して、not-null = "true"を削除することは可能ですか?(SQLスクリプトを記述して変更できることはわかっていますが、自動的に更新されるようにしたいと思います)
java - Hibernateを使用してデータベーススキーマを作成する方法
Hibernateを読んだ後:hbm2ddl.auto =本番環境で更新しますか?いくつかの質問が生じました。まず、Hibernateを使用する理由は、データベースベンダーに依存しないためです(「同じ」SQLクエリの10バージョンを作成する必要はありません(例:tsqlとsql))。
私の問題は、データベーススキーマ(本番環境)を作成するときに発生します。私が見る限り、私には2つの選択肢があります。
- hbm2dll=更新
- 純粋なSQL(ddl)スクリプト。
最初の選択肢は、上記のスレッドで広く説明されています。2番目の選択肢は悪いです。それは、最初の問題である「データベースベンダーに依存するSQLステートメントを作成したくない」に戻ったことを意味します。(「all」(最終的にデータベースのHibernateがサポートする)がDDL(データベースの構造の定義と検査に使用されるSQLのサブセット)を実装している場合、このステートメントは誤りになる可能性があります)。
hibernate - 必要な Hibernate データベース テーブルの手動初期化
私は Hibernate を使い始めていますが、今のところそれほど難しくありません。しかし、hbm2ddl.auto プロパティについて混乱しています。データベーステーブルを初期化するためにこれが行うことを手動で実行する方法はありますか? プログラムを実行するたびにではなく、データベースに変更を加えた後にのみこれを行いたいです。
編集:実行時はどうですか?データベース テーブルをプログラムで再初期化する Java プログラムの方法はありますか? org.hibernate.tool.hbm2ddl.SchemaUpdateはおそらく正しい獣のように見えますが、それが正確に何をするのかわかりません。
.net - NHibernate SchemaExportおよびConfigure()catch-22
新しいプロジェクトでDDDを使用し、最初にクラスをモデル化してから、クラスライブラリに基づいてデータベーススキーマを生成したいと思います。私の計画は、NHibernatehbm2ddlツールを使用してこれを行うことですSchemaExport
。
SchemaExport
問題は、 catch-22の奇妙な問題が原因で、を機能させることができないことです。には、有効なNHibernate構成ファイルとデータベースマッピングのセットをSchemaExport
必要とするオブジェクトが必要です。Configuration
ここでのキャッチ22は、Configure()を実行すると、文句を言うことです。"Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."
したがって、Configure()
メソッドはテーブルが存在する必要がありますが、テーブルが存在しないために作成できないことにSchemaExport
基づいてテーブルを作成することになっています。 Configuration
tが存在します。
では、いったいどうやって、スローせずに実際に何か便利なことをするConfiguration
ために必要なマッピングを含む有効なNHibernateを作成し、作成するテーブルが見つからないと文句を言うのでしょうか?指定されたテーブルの存在についてデータベースをチェックしないようにオブジェクトを設定できる「モード」はありますか、それとも他に何かする必要がありますか?SchemaExport
Configure()
SchemaExport
Configuration
database - DB移行-Hibernate/JPA-hbm2ddl-差分ツール
私が使う:
- EJB3 / JPA(休止状態)
- MySQL 5
データベースの移行を支援するシステムをセットアップする必要があります。LiquiBaseを使用しようとしましたが、Hibernateで使用するにはまだ十分に成熟していないようです。
私がしたいのは:
- アプリケーションのバージョン1.0を本番環境に使用しています
- アプリケーションのバージョン2.0を開発し、テストしました
- データを失うことなく、本番環境でアプリケーションデータベースを更新したい
persistence.xml
実際、古いデータベースと新しいデータベースの間に「デルタ」を生成できるように、新しいデータベースと本番データベースを使用したいと思います。hbm2ddlが「更新」モードのときに実行されるSQLコードを取得できるようにしたいと思います。
このSQLコードは、で発生する可能性のあるデータの損失を回避するために変更されます(drop + create = renameなど)hbm2ddl.auto=update
。
で新しいバージョンをデプロイするときにHibernateがそれを行うので、それは可能だと思いhbm2ddl.auto=update
ます。しかし、私は。を使用してAntタスクでそれを実行できるようにしたいと考えていますhibernatetool
。
私はインターネット上でこれに関する多くの情報を見つけられないので、誰かがすでにここでそのようなことをして、私を助けることができるかどうか疑問に思います。
私は次のことをしました:
方法がよくわかりません。作成SQLファイルを取得できましたが、デルタが必要です。update = "true"を入力する必要がありますか?アプリケーションサーバーの外部で永続ユニットを使用してjpaconfigを使用できますか(db設定はGlassfishのJNDIリソースで設定されます)。(試してみましたが、データベースが見つかりません)
JNDIリソースを使用する代わりに<jdbcconfiguration propertyfile="hibtest.properties"></jdbcconfiguration>
、データベースのプロパティを使用または設定してみました。persistence.xml
次のエラーが発生しました:
MySQLを使用しており、JDBCプロパティは次のとおりです。
JDBCMySQLドライバーはにあり${core.lib.server}: mysql-connector-java-5.1.7-bin.jar
ます。(私もクラスパスを入れようとしました<fileset dir="/home/slorber/workspace/core/lib/server" includes="*.jar" />
。)
Ant(Eclipseプラグイン)の実行構成クラスパスにも追加しました。
だから私の質問は:
- やりたいことをするために何か間違ったことをしましたか?
- これは、Hibernateフレームワークを使用してデータベースを移行する方法ですか?(そして、すべてのデータベースの変更を手作りのSQLファイルに書き込まない場合は他に何をしますか?)
hibernate - Hibernate(hbm2ddl)を使用してテーブルの定義を複製する
私の休止状態のアプリケーションには、アノテーション駆動型オブジェクトAuditEventがあります。その非常に単純で、外部キーの関係はありません。このテーブルの古いエントリを、 AuditEventテーブルのクローンである別のテーブルOldAuditEventに移動してアーカイブします。
現在、hbm2ddl(注釈付きデータモデル上)を使用してアプリケーション全体のDDLを生成し、AuditEventテーブルを手動でコピーして貼り付け、名前を変更してOldAuditEventを作成します。
ビルドプロセスを自動化したいのですが、hbb2ddlに「このエンティティを取得し、テーブル名をXに変更して、DDLを再生成する」ように指示する方法はありますか?
更新:あなたが概説したアプローチによってこれを機能させることができました。唯一の問題は、AnnotationSessionFactoryBeanを取得することでした。これは、ファクトリBeanであり、Springはファクトリの出力のみを提供するためです。ConfigExposedAnnotationSessionFactoryBean(AnnotationSessionFactoryBeanを拡張)を作成して、静的なハックのようなものを介してBeanファクトリを公開しましたが、実行したいのはビルド時タスクを実行することだけです。