1

I have a desktop java application that can be run by different users. It makes use of JPA to access a database that is stored as a file. For this purpose I do not want to run a separate database server.

The purpose of the database is to store actions that are done in the program, it's a simple "store record" operation. But all users must be able to read these stored records.

How can I make sure the different applications can save their actions, while not overwriting the actions of the other? So I need a way to:

  1. Open the database (file)
  2. Lock it
  3. Write the added action
  4. Close the database (file)

Is there a way in JPA to do/enforce this ? I'm now using hibernate, but that's not a strict requirement.

Please do not answer with "you can do this with technology XXX". Please note that I'm concerned with respect to the concurrency issues and how to enforce that the file is opened, and closed again. How can this be done with technology XXX ?

4

2 に答える 2

0

JPA は ORM (Object-relational Mapping) 仕様です。ORM の R は、RDBMS の R と同じ意味です。JPAは、フラットファイルの永続化システムにはまったく適していません

于 2013-04-04T08:05:21.827 に答える
0

SQLite データベース ファイルの使用を試すことができます。この場合、同じファイル (データベースなど) への同時アクセスを実現でき、同時にSQLite JDBC ドライバーを JPA プロバイダー (Hibernate など) と共に使用できます。

唯一の欠点は、厳密に言えば、提案された JDBC ドライバーにはネイティブ ライブラリがバンドルされているため、純粋な Java アプローチではないことですが、これを問題とは見なしません。

于 2013-04-04T08:06:16.387 に答える