私はSpringデータベースのJpaを、埋め込まれたH2データベースを持つスタンドアロンのGUI(Swing)Javaアプリケーションで使用します。Springブート - 組み込みデータベースへのトランザクションを永続的に維持します
私は春のブート1.3.0を使用し、これは私の追加設定です:spring.aop.proxy-target-class=true
:私は唯一のラインを持っている私のapplication.properties
ファイルで
private static final String dataSourceUrl = "jdbc:h2:./databse;DB_CLOSE_ON_EXIT=FALSE";
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create().url(dataSourceUrl).username("user").password("pwd").build();
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan(new String[] { "packages.to.scan" });
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.setProperty("hibernate.hbm2ddl.auto", "update");
em.setJpaProperties(properties);
return em;
}
。
私のリポジトリのために私はJpaRepository
を拡張します。
私が最近した唯一の問題はすべて動作しています。アプリケーションを実行していたMACでは、MACに何らかの問題があり、クラッシュしました。その後、以前に行われた変更は実際にデータベースに格納されませんでした。私は@Transactional
注釈を使用して、データベース内のデータを変更します。
私はデータベースに慣れていませんが、グーグルではトランザクションは永続コンテキスト(用語が正しいかどうかは不明です)によってキャッシュされ、アプリケーションが終了すると実際に永続化されると思います。私は、データベースファイルをチェックし、いくつかのクエリを含むGUIを介していくつかの操作を行いましたが、データベースファイルの変更日は、アプリケーションを閉じたときにのみ変更されました。
これはスタンドアロンのGUIアプリケーションであるため、すべてのトランザクションがデータベースに直接格納されているとパフォーマンスの問題は発生しません。私は正しい方法で、どのようにしてすべてのトランザクションがデータベースに直接永続化されるのだろうか?リポジトリのsave()
メソッドを呼び出すたびにコードを追加する必要がありますか?
ない場合、私は私が実際にボンネットの下に起こっていただきました!私はかなりよく分からないことを認めざるを得ないとしてこの種の問題をデバッグする方法を絶対にないアイデアを持っていません。..
変更はデータベーストランザクションはコミットされ、フラッシュされました。後者は通常、トランザクションが終了してから少し時間がかかります。アプリケーションを停止したときではありません。あなたのトランザクションの境界がそれほど大きくないことを確認しましたか?アプリケーション全体に対して1つのトランザクションしか使用しない場合、おそらくアプリケーションを停止する場合にのみコミットされます。 – dunni
少なくとも、アプリケーション全体で1つのトランザクションを意図的に使用していません。いくつかの関数 'propagation = Propagation.REQUIRES_NEW'を追加し、GUIでこの関数を呼び出していますが、結果は同じです:データベースファイルはアプリケーションを閉じると変更されます。 – Semaphor