0

私は Derby を使用して Hibernate を研究しています。以前は組み込みデータベースとして持っていたのですが、データを埋めるためのアリの仕事がうまくいかないので、ネットワーク版に切り替えています。

Java/Hibernate プログラムの他に、Squirrel クライアントを使用してデータベースにアクセスしています。できるだけシンプルなセットアップが必要です。通常のセキュリティ、暗号化なども必要ありません。

私は Squirrel を使用してデータベースを作成し、SQL スクリプトを使用してテーブルを作成しました。次に、テーブルにデータを配置する Ant ジョブを Eclipse から実行します。Ant スクリプトは、組み込みデータベースしかないときに 1 つのレコードをロードし、そのデータベースが「既に開いている」と言います。Ant スクリプトが複数のレコードを実行できるように、ネットワーク サーバー モードに切り替えました。

リス クライアントは、ユーザー名とパスワードの長さが 0 でない限り接続を拒否するので、admin/admin を入力します。

これを行うと、データベーステーブルがユーザー名の下に何らかの形で整理されているようです。squirrel の「オブジェクト」ウィンドウには、データベース名、ADMIN およびその下のその他の項目、TABLE および ADMIN の下のその他の項目、ADMIN の下に作成したテーブルが表示されます。ADMIN は SQL スクリプトには表示されず、データベースを作成してログインするために使用するユーザー名にのみ表示されるため、テーブルは ADMIN の下にあると想定します。これが私のユーザー名だからです。他にどこから来るのかわかりません。

休止状態の設定で URL に "username=admin;password=admin" を配置するかどうかに関係なく、追加しようとしている (最初の) テーブルが存在しないと表示されます。

Squirrel と Java/Hibernate が Derby データベースで互いに同じテーブルにアクセスできるようにするには、どうすればよいか教えてください。上記の用語 (Squirrel や Derby で使用されるユーザー名、スキーマ、修飾名、および単純名) を基本的に理解していれば、うまくいくと思います。

テーブル作成の 1 つを次に示します。

create table AdUser
(   id bigint generated by default as identity (start with 1),
    name varchar(255),
    password varchar(255),
    primary key (id),
    unique(name)
);

休止状態の設定ファイルは次のとおりです。

<property name="hibernate.connection.url"> jdbc:derby://localhost:1527/C:/Users/rcook/workspaceGalileoLaptop/BHChap3/BegHibernateDB;username=admin;password=admin</property>
<property name="hibernate.connection.driver_class"> org.apache.derby.jdbc.ClientDriver40 </property>
<!--  <property name="hibernate.connection.username">sa</property>  -->
<!--  <property name="hibernate.connection.password"></property> -->
<property name="hibernate.dialect">   org.hibernate.dialect.DerbyDialect  </property>

<property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.show_sql">false</property>

繰り返します。これは組み込みデータベースの 1 つのレコードに対して機能したため、接続、マップされたオブジェクトの作成、コミットなどのコードがすべて機能すると確信しています。しかし、私は 2 つのアクセス方法からのログインに何か問題があると確信しています。

4

1 に答える 1

1

実際、各データベース内には「スキーマ」と呼ばれる中間レベルのテーブル編成があります。Derby のスキーマ実装について詳しくは、http: //db.apache.org/derby/docs/10.9/ref/rrefschemaname.htmlを参照してください。

スキーマ名はデフォルトでユーザー名になりますが、クエリでいつでもスキーマ名を明示的に指定できることに注意してください。

select * from admin.aduser;

アクセスするテーブルとは異なるテーブルにアクセスする

select * from rcook.aduser;
于 2013-02-18T16:16:42.903 に答える