<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Neil的備忘錄

    just do it
    posts - 66, comments - 8, trackbacks - 0, articles - 0

    Making objects persistent

    Posted on 2008-11-01 10:07 Neil's NoteBook 閱讀(123) 評論(0)  編輯  收藏

    Newly instantiated instances of a a persistent class are considered transient by Hibernate. We can make a transient instance persistent by associating it with a session:

    DomesticCat fritz = new DomesticCat();
    fritz.setColor(Color.GINGER);
    fritz.setSex('M');
    fritz.setName("Fritz");
    Long generatedId = (Long) sess.save(fritz);

    If Cat has a generated identifier, the identifier is generated and assigned to the cat when save() is called. If Cat has an assigned identifier, or a composite key, the identifier should be assigned to the cat instance before calling save(). You may also use persist() instead of save(), with the semantics defined in the EJB3 early draft.

    • persist() makes a transient instance persistent. However, it doesn't guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. persist() also guarantees that it will not execute an INSERT statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context.

    • save() does guarantee to return an identifier. If an INSERT has to be executed to get the identifier ( e.g. "identity" generator, not "sequence"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is problematic in a long-running conversation with an extended Session/persistence context.

    Alternatively, you may assign the identifier using an overloaded version of save().

    DomesticCat pk = new DomesticCat();
    pk.setColor(Color.TABBY);
    pk.setSex('F');
    pk.setName("PK");
    pk.setKittens( new HashSet() );
    pk.addKitten(fritz);
    sess.save( pk, new Long(1234) );

    If the object you make persistent has associated objects (e.g. the kittens collection in the previous example), these objects may be made persistent in any order you like unless you have a NOT NULL constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a NOT NULL constraint if you save() the objects in the wrong order.

    Usually you don't bother with this detail, as you'll very likely use Hibernate's transitive persistence feature to save the associated objects automatically. Then, even NOT NULL constraint violations don't occur - Hibernate will take care of everything. Transitive persistence is discussed later in this chapter. 


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲第一网站男人都懂| 精品久久久久久久免费人妻 | 日本免费一区二区三区最新| 亚洲男女一区二区三区| 午夜国产精品免费观看| 国产亚洲福利在线视频| 成人免费无码大片A毛片抽搐 | 亚洲精品网站在线观看不卡无广告| 亚洲爆乳精品无码一区二区| 国产jizzjizz视频全部免费| 一区二区三区免费电影| 好看的亚洲黄色经典| 久久久久久成人毛片免费看| 精品亚洲A∨无码一区二区三区| 日本高清在线免费| 亚洲av永久无码精品天堂久久 | 日本免费一区二区久久人人澡| 亚洲男人都懂得羞羞网站| 成人免费福利视频| 麻豆亚洲AV成人无码久久精品| 免费欧洲毛片A级视频无风险| 一级毛片免费视频网站| 久久久无码精品亚洲日韩蜜桃 | 亚洲色偷偷综合亚洲AV伊人蜜桃| 午夜dj免费在线观看| 亚洲高清免费视频| 亚洲综合激情六月婷婷在线观看| A级毛片内射免费视频| 九九九精品视频免费| 亚洲精品免费视频| 免费鲁丝片一级在线观看| yellow视频免费看| 亚洲午夜电影在线观看| 亚洲AV无码一区二区三区国产| 久久久久国产精品免费免费不卡| 亚洲欧美国产日韩av野草社区| 国产亚洲美日韩AV中文字幕无码成人| h片在线免费观看| 日韩在线观看免费完整版视频| 亚洲欧洲精品一区二区三区| 免费真实播放国产乱子伦|