hibernate中Session的saveOrUpdate()方法详解

2025-10-06 11:58:19

1、Session的saveOrUpdate()方法同时包含了save()与update()方法的功能。

hibernate中Session的saveOrUpdate()方法详解

2、当数据库中没有此对象时将执行insert方法:

     @Test

        public void testSaveOrUpdate() {

                News news = new News("tomcat","FF",new Date());

                session.saveOrUpdate(news);

        }

hibernate中Session的saveOrUpdate()方法详解

3、当对象设置了id时,程序将执行update语句:

@Test

        public void testSaveOrUpdate() {

                News news = new News("tomcat","FF",new Date());

                news.setId(1);

                session.saveOrUpdate(news);

        }

hibernate中Session的saveOrUpdate()方法详解

4、如果OID不为null,但是数据库表中还没有和其对应的记录,会抛出异常。

hibernate中Session的saveOrUpdate()方法详解

5、如果OID值等于id的unsaved-value属性值的对象,也被认为是一个游离对象。

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.gwolf.domain.News" table="NEWS">

        <id name="id" type="java.lang.Integer" unsaved-value="11">

            <column name="ID" />

            <generator class="native" />

        </id>

        <property name="title" type="java.lang.String">

            <column name="TITLE" />

        </property>

        <property name="author" type="java.lang.String">

            <column name="AUTHOR" />

        </property>

        <property name="date" type="java.util.Date">

            <column name="DATE" />

        </property>

    </class>

</hibernate-mapping>

hibernate中Session的saveOrUpdate()方法详解

6、现在我们再次运行单元测试,查看程序的结果。此时尽管ID不在数据库中,程序将会执行insert语句。

hibernate中Session的saveOrUpdate()方法详解

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢