문제

내 앱에서 두 개의 지속성 객체가 있습니다. 사물에 붙어있는 것들과 태그.앱은 태그가 첨부 된 것들의 컬렉션을 생성 할 수 있습니다.태그 객체에는 고유 한 이름이 있습니다 (동일한 태그로 뭔가를 두 번 태그하는 것이 좋습니다).

태그 객체가 첨부 된 것들을 삽입 할 때 동일한 이름의 태그 객체 중 일부가 DB에 이미 있습니다.이제는 JPA에 대해 기억하지 않는 부분이 있습니다. JPA에 고유 제한 조건을 위반하는 경우 해당 개체를 DB에 추가하지 않아도되어서는 안되는 방법이 있습니까?아니면 먼저 모든 객체를 가져오고 메모리에 컬렉션을 병합 한 다음 다시 쓸 수있는 방법을 효율적으로 W / O를 수행하는 방법이 있습니까?

나는 또한 한 번에 전체 컬렉션을 지속 시키거나 JPA를 사용할 때 모든 객체에 대해 지속해야합니까?

도움이 되었습니까?

해결책

JPA와 Hibernate 또는 다른 제공자와 함께하지 않고이 '깨끗하게'일을하는 방법을 알지 못합니다.그래도 사용자 지정 SQL 쿼리로 원하는 것을 얻을 수 있습니다 (이 질문 ) :

@Entity
@Table(name="tag")
@SQLInsert( sql="INSERT INTO tag(name, count) VALUES (?, ?)
 ON DUPLICATE KEY UPDATE set count = count + 1")
public class Tag {}
.

이제는 불행히도 Hibernate와 MySQL 모두에 묶여 있습니다.다른 DB : S 및 / 또는 저장 프로 시저를 사용하는 경우 SQL 구문을 변경하고 먼저 업데이트를 시도하고 실패시 삽입하십시오. 이들은 모두 단점이 있으므로 JPA 가이 기능을 지원할 경우 유용합니다.

두 번째 질문에 관해서, JPA 지원은 컬렉션을 포함하여 전체 객체 그래프를 지속시킵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top