将对象保存在数据库中(如果它尚不存在)(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二级缓存可以容纳很多(如果不是全部)类型,在检查存在时会导致简单的哈希表查找(假设单个节点). 但实际上,除非您谈论大量事务,否则在保存/更新之前进行简单的预查询不会影响您的性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |