Save()和persist()这两种方法都用于在数据库中保存对象。
根据文档-
Save()-坚持给定的瞬时实例,首先分配一个生成的标识符。(或者,如果使用分配的生成器,则使用标识符属性的当前值。)如果关联是用cascade =“ save-update”映射的,则此操作将级联到关联的实例。
根据文档-
persist()-使瞬态实例持久化。如果关联是用cascade =“ persist”映射的,则此操作将级联到关联的实例。该方法的语义由JSR-220定义。
| 序号 | 键 | 救() | 坚持() |
|---|---|---|---|
1 | 基本的 | 它将对象存储在数据库中 | 它还将对象存储在数据库中 |
2 | 返回类型 | 它返回生成的ID,并且返回类型可序列化 | 它不返回任何东西。它的void返回类型。 |
3 | 事务边界 | 它可以将对象保存在边界内和边界外 | 它只能在事务边界内保存对象 |
4。 | 分离物体 | 它将在表中为分离对象创建新行 | 它将为分离对象抛出持久性异常 |
5, | 支持者 | 只有Hibernate支持 | JPA也支持它 |
@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();
}
}@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();
}
}