Java.Hibernate.Beginner.What is better, save or persist ?

It depends on your needs — but in modern, portable code, persist() is usually the better choice. Here’s why:


🔹 Why prefer persist()
✅ Standardized (JPA) — persist() is part of the JPA specification, so it’s portable across any JPA implementation (Hibernate, EclipseLink, etc.).
✅ Safer behavior — persist() requires an active transaction, ensuring you don’t accidentally “save” something without committing (which could silently fail with save()).
✅ Consistent semantics — guarantees the entity will become managed/persistent if the transaction commits.

🔹 When might you use save()
✅ If you specifically need the generated ID immediately, because save() returns it as a Serializable.
✅ If you’re writing Hibernate-specific code, and you don’t care about JPA portability.
✅ When you don’t mind that save() works outside transactions (but be careful: this can lead to inconsistent behavior).

🔹 Key differences summarized:

Featuresave()persist()
Returns ID?Yes (Serializable)No (void)
Requires transaction?No (but recommended)Yes (throws exception if missing)
JPA-compliant?No (Hibernate-specific)Yes (standard JPA)
PortabilityHibernate-onlyWorks with any JPA provider

✅ Best practice:
Use persist() for new projects or whenever you want portable, JPA-compliant code.
Use save() only if you specifically need the returned ID and you’re OK with Hibernate-specific APIs.

This entry was posted in Без рубрики. Bookmark the permalink.