java - Hibernate保存和SQL插入有什么区别?

标签 java sql database hibernate hql

通常,我通过 sql/hql 语句插入或更新对象来将对象存储在数据库中。

query = session.createQuery("INSERT INTO Employee(firstName, lastName, salary)");
query.executeUpdate();

最近我读到了 Hibernates session.save() 方法,它接受一个类,并且似乎自动执行将类及其属性插入数据库的魔法。

所以我想知道,“保存”有什么作用?

它只是为用户生成一条 SQL 语句吗?

或者说与普通的hqlQuery方式相比有什么优点或缺点?

最佳答案

保存:

Save 方法将对象存储到数据库中。它将持久保存给定的 transient 实例,首先分配生成的标识符。它返回创建的实体的 ID。

docs说,

Persist the given transient instance, first assigning a generated identifier. (Or using the current value of the identifier property if the assigned generator is used.) This operation cascades to associated instances if the association is mapped with cascade="save-update".

另请查看What are the differences between the different saving methods in Hibernate?

关于java - Hibernate保存和SQL插入有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843776/

相关文章:

sql - 你怎么能有两个 COUNT 查询 GROUPED BY SQL 中的同一列?

php - 使用 PHP 根据 MySQL 表中的特定文本显示特定图像

java - 即使没有指定接口(interface),也可以针对接口(interface)编译 Java 类

sql - 将长转换为时间

java - 我可以使用 Java 将数据插入数据库,但无法选择并显示它

mysql - SQL递归查询(MySQL 5.7)

mysql - SQL 查询 - 关系表的双重条件

mysql - 尝试从同一个表中获取匹配和不匹配的值

java - 如何修复 Java 中的 Ldap 连接错误 "javax.naming.SizeLimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded]"?

java - onBackPressed() 无法使 MainActivity 重新加载