회사 및 엔티티 호출 토큰이 있습니다.최대 절전 모드에서 더티 검사를 피하는 방법
1 회사에 많은 토큰이 있습니다. 내 회사 엔티티에 따라서
, 나는 다음과 같은 것이다 : 그러나@OneToMany(mappedBy = "companyId")
public Set<Token> getTokens() {
return tokens;
}
, 나는 반환하는 동안 몇 가지 논리가됩니다, 그것은 다음과 같이 반환하기 전에 뭔가를 토큰 목록을 변경합니다 :
를@OneToMany(mappedBy = "companyId")
public Set<Token> getTokens() {
tokens.remove(token);
return tokens;
}
나는 토큰 목록의 값을 변경하므로 최대 절전 모드를 사용하여 db에서 회사 개체를 선택할 때마다 회사 테이블이 자동으로 업데이트됩니다.
내 이해에 따라, 이것은 최대 절전 모드의 더티 검사 동작입니다. 따라서 Hibernate가 변경 사항을 감지하면 데이터베이스에 대한 업데이트를 수행합니다.
이것을 피할 수있는 방법이 있습니까? 예를 들어, 단지 기존의 hibernate 함수를 호출 할 수 있습니다. 그래서 hibernate는 토큰리스트가 더럽다는 것을 알게 될 것이고, 업데이트를하지 않을 것입니다.
예, getTokens()의 필터링 논리가 적합하지 않음을 알고 있습니다. 오른쪽 필터링 논리가 엔티티 수준에서 적용되지 않아야합니다. 그러나 현재이 방법을 사용하는 곳이 많기 때문에이 엔티티 수준에서 변경하면 다른 곳에도 영향을 미치고 다른 곳도 변경하면 전체 응용 프로그램을 다시 테스트해야합니다.
따라서 더 나은 방법을 찾으려고합니다.
하나의 대체는 원래 데이터의 복사본을 생성하고 복사 된 데이터를 복사 한 데이터에 논리를 수행하고 반환 :
아마 아래의 구현이 도움이 될 것입니다. –