>  기사  >  Java  >  Hibernate에서 `session.persist()` 또는 `session.save()`를 사용해야 합니까?

Hibernate에서 `session.persist()` 또는 `session.save()`를 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 22:10:03379검색

 Should I use `session.persist()` or `session.save()` in Hibernate?

Hibernate의 session.persist()와 session.save() 메소드 비교

Hibernate에서는 session.persist()와 session 둘 다. save()는 객체를 지속성으로 만드는 데 사용됩니다. 그러나 특정 시나리오에서 동작에 영향을 미치는 두 가지 방법에는 주요 차이점이 있습니다.

session.persist()와 session.save()

정의:

  • persist(): 임시 인스턴스를 영구화합니다.
  • save(): 인스턴스를 즉시 영구화하거나 식별자 할당을 보장하지 않습니다.

식별자 할당:

  • persist(): 즉각적인 식별자 할당을 보장하지 않습니다.
  • save(): 식별자를 반환합니다. INSERT 문 실행이 필요할 수 있습니다.

트랜잭션 요구 사항:

  • persist(): 트랜잭션 경계 외부에서는 INSERT를 실행하지 않습니다.
  • save(): 트랜잭션 외부에서도 즉시 INSERT를 실행합니다.

의미:

  • 지속: 트랜잭션 외부에 INSERT가 발생하지 않도록 보장하여 확장된 세션/지속성 컨텍스트를 사용하여 장기간 실행되는 대화에 적합합니다.
  • 저장: 트랜잭션에 관계없이 (필요한 경우) 즉시 식별자를 할당합니다. 상태는 확장된 대화에서 항상 바람직하지는 않습니다.

예:

데이터베이스가 자주 업데이트되지 않는 장기 실행 대화를 생각해 보세요. persist()를 사용하면 세션에 추가된 객체가 트랜잭션이 커밋될 때만 지속됩니다. 이렇게 하면 불필요한 INSERT와 잠재적인 데이터 불일치를 피할 수 있습니다.

결론:

session.persist()와 session.save() 모두 특정 사용 사례가 있습니다. persist()는 트랜잭션 내 지속성을 보장하고 장기 실행 대화에서 불필요한 INSERT를 방지합니다. 반면 save()는 식별자를 즉시 ​​할당하므로 생성된 값을 즉시 사용하는 데 유용할 수 있지만 특정 시나리오에서는 효율성이 떨어질 수 있습니다.

위 내용은 Hibernate에서 `session.persist()` 또는 `session.save()`를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.