2017-12-22 6 views
0

私は休止状態を学習しており、それがORMツールであることを知りました。 Hibernateを使用してEntityの個々の項目を保存する必要はありますか?

@Entity 
@Table(name="USER_DETAILS") 
public class UserInfo { 

    @ElementCollection 
    Set<Address> addressList = new HashSet<Address>(); 

    // Some other code... 
} 

主な用途:

は、このシナリオを考えコードからわかるように

public class MainApp { 

    public static void main(String s[]) { 

     SessionFactory sf = null; 
     sf = new Configuration().configure().buildSessionFactory(); // This will read the hibernate.cfg.xml file 

      // We can save using session.save(object) 
    } 
} 

、我々はUserInfoエンティティにaddressList(コレクション)を持っています。

私の質問は:私たちは、エンティティを保存すると

embedded objectは自動的にエンティティの一部として保存されるだろうか、私たちは、具体的にもcollection objectを保存する必要がありますか?

+1

工場出荷時の保存メソッドがUserInfoを消費すると仮定すると、UserInfoオブジェクトに設定されている限り、コレクションオブジェクトを特別に保存する必要はありません。 – CrazySabbath

+1

子エンティティを永続化するために 'Cascade'戦略を指定する必要があります – Saravana

+0

@Saravana:子エンティティではなくCollectionです。これをどこで指定しますか?あなたは詳細を教えていただけますか? – CuriousMind

答えて

0
  1. cascade = "none"(デフォルト)は、Hibernateに関連付けを無視するように指示します。
  2. カスケード= トランザクションがコミットされたときに、オブジェクトが(保存に渡されたときの関連をナビゲートするために休止状態を告げる「更新を保存する」)または 更新()と新しくインスタンス化された過渡インスタンスを保存し 分離インスタンスへの変更を永続。
  3. cascade = "delete"は、オブジェクトがdelete()に渡されたときに、関連付けをナビゲートし、永続的なインスタンスを削除するようにHibernateに指示します。
  4. cascade = "すべて"とは、セーブアップデートと削除の両方をカスケードすることと、エビックとロックのための コールをカスケードすることを意味します。
  5. cascade = "all-delete-orphan"はcascade = "all"と同じ意味ですが、さらに、 Hibernateは、アソシエーションから削除された永続エンティティインスタンスを削除します。コレクション)。
  6. cascade = "delete-orphan" Hibernateは、アソシエーションから削除(参照解除)された永続エンティティ インスタンスを削除します(コレクションの の場合)。
+0

を入力すると、UserInfoを保存するとアドレスの詳細も保存されます。 – aruntheimperfect

関連する問題