0

以下に示す小さな休止状態アプリケーションについて、私が理解できないことがいくつかありmapping xmlます。

    <class name="pojo.Ghazal" table="ghazal">
        <id name="s_no">
            <generator class="increment" />
        </id>
        <property name="poem" />
        <property name="poet" />
        <map name="map" table="linked" cascade="all">
            <key column="s_no" />
            <index column="key_" type="string" />
            <many-to-many column="val_" class="pojo.Singer" />
        </map>
    </class>

    <class name="pojo.Singer" table="singer">
        <id name="s_no">
            <generator class="increment" />
        </id>
        <property name="singer_name" />
        <property name="country" />
    </class>

との 2pojosつがGhazalありSingerます。クラスのマッピングは理解できSingerますが、クラスのマッピングは理解できませんGhazal

次のプログラムを実行すると:

    Configuration config = new Configuration().configure();
    SessionFactory sessFact = config.buildSessionFactory();
    Session sess = sessFact.openSession();
    Transaction trans = sess.beginTransaction();
    Ghazal ghazal = new Ghazal();

    Singer singer = new Singer();
    singer.setCountry("Pakistan");
    singer.setSinger_name("Mehdi Hasan");
    Singer singer_1 = new Singer();
    singer_1.setCountry("India");
    singer_1.setSinger_name("Jagjit Singh");

    HashMap map = new HashMap();
    map.put("key_1", singer);
    map.put("key_2", singer_1);

    ghazal.setPoem("Woh Jo Hum Mein Tum Mein Qarar Tha");
    ghazal.setPoet("Momin Khan Momin");
    ghazal.setMap(map);

    sess.save(ghazal);
    trans.commit();

データは 3 つのテーブル、つまり に自動的に保存されますghazal, linked, singer。クラスsingerのオブジェクトのみをコミットしている間、データはどのようにテーブルに格納されますか?ghazal

そして、タグは何ですか:

<many-to-many...> 

する

4

1 に答える 1

0

のインスタンスGhazalが永続化される場合

sess.save(ghazal);

操作は、 から参照されるマップ内にある Singer のインスタンスにカスケードされますGhazal。属性 cascade が に設定されているため、(他の操作の中で) 保存がカスケードされallます。

<map name="map" table="linked" cascade="all">
    <key column="s_no" />
    <index column="key_" type="string" />
    <many-to-many column="val_" class="pojo.Singer" />
</map>

この場合、多対多とは、 の単一インスタンスを の多数のインスタンスと関連付けることができ、 の単一インスタンスSingerを の多数のインスタンスと関連付けることができることを意味します。コレクションのマッピングは、たとえばHibernate リファレンス ドキュメントに記載されています。GhazalGhazalSinger

于 2013-06-13T08:24:28.933 に答える