Aravind S
Aravind S

Reputation: 535

JPA : insert and delete object in same transaction

I want to insert an object into database in a transaction and after that object is saved in the database, I'd like to delete that it once a specific operation is done. Can I restart the transaction again and perform deletion and then commit? Is this a correct way of doing it?

Example :

Employee employee = new Employee();
String name = "Ronnie";
entityManager.getTransaction.begin();
employee.setName(name);
entityManager.persist(employee);
entityManager.getTransaction.commit();

//After few steps

entityManager.getTransaction.begin();
entityManager.remove(employee);
entityManager.getTransaction.commit();

Upvotes: 1

Views: 13860

Answers (2)

Shirkam
Shirkam

Reputation: 754

SHORT ANSWER: Yes, you can do that whithout problems.

LONG ANSWER: Yes, you can.
Every transaction is independent of any other transaction. So, if you do some operations, commit them (remember, committing a transaction execs the operations in the DB, and closes it), and then reopen it lately, it is independent of the last transaction.
You can even be in the same transaction, whithout closing it, by flushing changes to the DB:

Employee employee = new Employee();
String name = "Ronnie";
entityManager.getTransaction.begin();
employee.setName(name);
entityManager.persist(employee);
entityManager.flush();

//After few steps, the transaction is still the same
entityManager.remove(employee);
entityManager.getTransaction.commit();

Upvotes: 2

MC Ninjava
MC Ninjava

Reputation: 244

The transaction isolate database state from other transactions. So you can insert and delete in the same transaction. no need to commit it.

Upvotes: 0

Related Questions