Hibernate中save()和persist()之间的区别
Save()和persist()
这两种方法都用于在数据库中保存对象。
根据文档-
Save()-坚持给定的瞬时实例,首先分配一个生成的标识符。(或者,如果使用分配的生成器,则使用标识符属性的当前值。)如果关联是用cascade=“save-update”映射的,则此操作将级联到关联的实例。
根据文档-
persist()-使瞬态实例持久化。如果关联是用cascade=“persist”映射的,则此操作将级联到关联的实例。该方法的语义由JSR-220定义。
1
基本的
它将对象存储在数据库中
它还将对象存储在数据库中
2
返回类型
它返回生成的ID,并且返回类型可序列化
它不返回任何东西。它的void返回类型。
3
事务边界
它可以将对象保存在边界内和边界外
它只能在事务边界内保存对象
4。
分离物体
它将在表中为分离对象创建新行
它将为分离对象抛出持久性异常
5,
支持者
只有Hibernate支持
JPA也支持它
在Hibernate中保存的示例
@Entity public class User { @Id Integer id; String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import com.journaldev.hibernate.util.HibernateUtil; public class SaveExample { public static void main(String[] args) { //获取会话工厂以开始事务 SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setId(1) user.setName("ABCD") session.save(user); //关闭资源 tx.commit(); sessionFactory.close(); } }
在Hibernate中坚持的例子
@Entity public class User { @Id Integer id; String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import com.journaldev.hibernate.util.HibernateUtil; public class PersistExample { public static void main(String[] args) { //获取会话工厂以开始事务 SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setId(1) user.setName("ABCD") session.persist(user); //关闭资源 tx.commit(); sessionFactory.close(); } }