Hibernate가 Save () 함수와 거의 유사한 persist () 메소드를 제공하는 이유는 JPA 사용 습관을 관리하는 것입니다. 한편, save ()와 persist () 메소드 사이에는 또 다른 차이가 있습니다. save () 메소드를 사용하여 영구 객체를 저장하면 메소드는 영구 객체의 식별자 속성 값을 반환합니다 (즉, 레코드에 해당하는 주요 키 값). 그러나 지속적인 객체를 저장하기 위해 persist () 메소드를 사용하면이 메소드에는 리턴 값이 없습니다. Save () 메소드는 영구 객체의 ID 속성을 즉시 반환해야하므로 프로그램 Execution Save ()는 영구 개체에 해당하는 데이터를 데이터베이스에 즉시 삽입합니다. persist ()는 사물 외부에서 호출 될 때 즉시 삽입 문으로 변환되지 않도록합니다. 이 기능은 매우 유용합니다. 특히 긴 세션 프로세스를 캡슐화 할 때 persist () 메소드가 특히 중요합니다.
명확한 구별이 여기에 제공됩니다. (SRC를 따라 볼 수 있습니다. 구현 단계는 비슷하지만 여전히 미묘한 차이가 있습니다).
주요 컨텐츠 차이점 :
1. 지속적인 인스턴스 인스턴스는 지속적이지만, 식별자 (식별자 기본 키에 해당하는 속성)가 영구 인스턴스에서 즉시 채워지고 식별자 채우기가 플러시 될 때까지 지연 될 수 있다고 보장하지는 않습니다.
2. 저장, 과도 인스턴스의 식별자를 유지하고 제 시간에 생성합니다. 식별자를 반환해야하므로 즉시 SQL Insert가 실행됩니다.
다른 네티즌의 설명 :
메소드를 저장하십시오
지속적인 객체를 저장하면이 메소드는 지속 된 객체의 식별자 속성 값 (즉, 기본 키)을 반환합니다.
이 방법은 영구 객체의 해당 데이터를 데이터베이스에 즉시 삽입합니다.
지속적인 방법
이 메소드는 값을 반환하지 않습니다.
트랜잭션 외부에서 호출되면 즉시 삽입 문으로 변환되지 않도록하십시오.
긴 세션 흐름에 적합합니다.