Hibernate 中 save() 和 persist() 的区别
Save() 和 persist() 这两种方法都用于将对象保存到数据库中。
根据文档 -
Save() - 持久化给定的瞬时实例,首先分配一个生成的标识符。(或者如果使用分配的生成器,则使用标识符属性的当前值。)如果关联映射了 cascade="save-update",则此操作会级联到关联的实例。
根据文档 -
persist() - 使瞬时实例持久化。如果关联映射了 cascade="persist",则此操作会级联到关联的实例。此方法的语义由 JSR-220 定义。
| 序号 | 关键 | save() | persist() |
|---|---|---|---|
1 | 基本 | 它将对象存储到数据库中 | 它也把对象存储到数据库中 |
2 | 返回类型 | 它返回生成的 ID,返回类型是可序列化的 | 它不返回任何内容。它的返回类型是 void。 |
3 | 事务边界 | 它可以在边界内和边界外保存对象 | 它只能在事务边界内保存对象 |
4. | 分离的对象 | 它将为分离的对象在表中创建一个新行 | 它将为分离的对象抛出持久性异常 |
5. | 受支持 | 它仅受 Hibernate 支持 | 它也受 JPA 支持 |
Hibernate 中 Save 的示例
@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) {
//get session factory to start transcation
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);
//Close resources
tx.commit();
sessionFactory.close();
}
}Hibernate 中 Persist 的示例
@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) {
//get session factory to start transcation
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);
//Close resources
tx.commit();
sessionFactory.close();
}
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP