将对象保存在数据库中(如果它尚不存在)(Hibernate和Spring)
|
我正在研究一个Hibernate / Spring应用程序来管理一些电影. 课堂电影与班级类型有很多关系. 使用@Cascade(CascadeType.SAVE_UPDATE)通过电影对象保存该类型 我现在要做的是让Hibernate检查是否已经存在类型为“Fantasy”的类型,如果有,请使用该类型的id而不是尝试插入新记录. 最后我需要的是像select-before-update之类的东西,但更像是select-before-save. Hibernate中有这样的功能吗? 一些代码: 电影课 @Entity
public class Movie {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@Lob
private String description;
@Temporal(TemporalType.TIME)
private Date releaseDate;
@ManyToMany
@Cascade(CascadeType.SAVE_UPDATE)
private Set<Genre> genres = new HashSet<Genre>();
.... //other methods
类型课程 @Entity
public class Genre {
@Column(unique=true)
private String type;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id
....//other methods
解决方法你可能在想这个.任何select-before-update / select-before-save选项将导致2个DB往返,第一个用于select,第二个用于插入(如果需要).如果你知道从一开始你就不会有很多类型,那么在大多数情况下你都可以在1 RT中做到这一点: > Hibernate二级缓存可以容纳很多(如果不是全部)类型,在检查存在时会导致简单的哈希表查找(假设单个节点). 但实际上,除非您谈论大量事务,否则在保存/更新之前进行简单的预查询不会影响您的性能. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 无法在SQL Server 2012上运行的T-SQL CTE实现
- 整理一下SQLSERVER的排序规则
- mysql服务启动不了解决方案
- 即使设置了主键约束,SQL表继承也会在基表中导致重复记录
- MySQL子查询的几种常见形式介绍
- R data.table join:连接表中的SQL“select *”类似语法?
- sql – 带/不带传递参数的条件存储过程
- Linux中使用mysqladmin extended-status配合Linux命令查看M
- sql-server – 对于SELECT INTO表查询,WHERE 1 = 2有什么意
- SQL Server – 每个状态拉X随机记录
