JPA EntityManager: Why use persist() over merge()?

后端 未结 15 1653
说谎
说谎 2020-11-22 03:09

EntityManager.merge() can insert new objects and update existing ones.

Why would one want to use persist() (which can only create new objec

15条回答
  •  庸人自扰
    2020-11-22 03:34

    Scenario X:

    Table:Spitter (One) ,Table: Spittles (Many) (Spittles is Owner of the relationship with a FK:spitter_id)

    This scenario results in saving : The Spitter and both Spittles as if owned by Same Spitter.

            Spitter spitter=new Spitter();  
        Spittle spittle3=new Spittle();     
        spitter.setUsername("George");
        spitter.setPassword("test1234");
        spittle3.setSpittle("I love java 2");       
        spittle3.setSpitter(spitter);               
        dao.addSpittle(spittle3); // <--persist     
        Spittle spittle=new Spittle();
        spittle.setSpittle("I love java");
        spittle.setSpitter(spitter);        
        dao.saveSpittle(spittle); //<-- merge!!
    

    Scenario Y:

    This will save the Spitter, will save the 2 Spittles But they will not reference the same Spitter!

            Spitter spitter=new Spitter();  
        Spittle spittle3=new Spittle();     
        spitter.setUsername("George");
        spitter.setPassword("test1234");
        spittle3.setSpittle("I love java 2");       
        spittle3.setSpitter(spitter);               
        dao.save(spittle3); // <--merge!!       
        Spittle spittle=new Spittle();
        spittle.setSpittle("I love java");
        spittle.setSpitter(spitter);        
        dao.saveSpittle(spittle); //<-- merge!!
    

提交回复
热议问题