Hibernate 在分离实体的情况下何时使用合并与更新

Hibernate 在分离实体的情况下何时使用合并与更新,hibernate,merge,Hibernate,Merge,现在我的问题是,如果我在更新会话中使用.update(e),它也可以工作,它也会更新数据库中的值,那么我如何知道在分离实体的情况下何时使用merge和何时使用update当两个分离的对象代表同一实体时,应该使用merge。Hibernate将自动确定上次更新的字段,并将两个对象合并在一起,以便最新的信息出现在新对象中,然后添加到数据库中 当您只想用分离的实体更新数据库对象时,应该使用Update 例: Foo1和Foo2都是Foo对象,具有Bar1和Bar2字段

现在我的问题是,如果我在更新会话中使用.update(e),它也可以工作,它也会更新数据库中的值,那么我如何知道在分离实体的情况下何时使用merge和何时使用update当两个分离的对象代表同一实体时,应该使用merge。Hibernate将自动确定上次更新的字段,并将两个对象合并在一起,以便最新的信息出现在新对象中,然后添加到数据库中

当您只想用分离的实体更新数据库对象时,应该使用Update

例:
Foo1
Foo2
都是
Foo
对象,具有
Bar1
Bar2
字段<在
Foo2
Bar1
值之后更新了
Foo1
Bar1
值。调用merge时,
Foo1
Bar1
值将用于更新
Foo
的数据库实例

public class unconnected {
    public static void main(String[] args) {
        //System.out.println("enter the id you want toc carry change on");
        //Scanner s=new Scanner(System.in);
        //int id=s.nextInt();
        dao x=new dao();
    emp e=  x.findbyid(id);
        e.setId(10);
        e.setName("dsfsdassafasdsa");
        e.setJob("546");
        e.setSalary(789);
        x.update(e);
        }

public class dao {
    public emp findbyid(int id)
    {
    Session session=myfactory.getSession();
    emp e=(emp)session.get(emp.class, id);
    session.close();
    return e;
    }
    public void update(emp e)
    {
    Session session=myfactory.getSession();
    Transaction t=session.beginTransaction();
    session.merge(e);
    t.commit();
    session.close();

    }


}