IMO persistence.xml にそのような設定はありません
このパターンは、接続で autocommit false を設定してから、任意の数のクエリを実行できる JDBC トランザクション管理から採用されたと思います。ただし、接続時にコミットを呼び出さない限り、トランザクションはコミットされません。autocommit が false (デフォルト) の場合、実行された各ステートメントは暗黙的にコミットされ、アトミック操作で実行する必要がある複数のステートメントがある場合、これが発生することは望ましくありません。
あなたの例を挙げると、オブジェクトを永続化すると、そのオブジェクトにはダーティで永続化する必要がある関連付けがある場合があります。そのため、アトミックに実行する必要がある SQL が複数存在します。したがって、上記のトランザクション管理戦略が使用されます。
エンティティ マネージャー (JPA 内) とセッション API (Hibernate 内) は、データベースでの CRUD 操作を抽象化するように設計されています。生成された sql ステートメントを実際にコミットするために、トランザクション API はトランザクション管理の抽象化として設計されています。この個別の抽象化の理由は、トランザクションには通常、リソース ローカル トランザクションと分散トランザクションの 2 つのタイプがあるためだと思います。
リソース ローカル トランザクションは、分散トランザクションとは異なる方法でトランザクション管理インフラストラクチャによって処理される必要があります。リソース ローカル トランザクションでは、データベースに送信されたすべての SQL は、接続時にコミットが呼び出されたときにデータベースによってコミットされるか、接続時にロールバックが呼び出されたときにロールバックされます。分散トランザクション管理では、トランザクション マネージャー コンポーネントは、すべての参加者へのコミットまたはロールバックのシグナリングを管理するコンポーネントです。
JPAでは、トランザクションタイプを次のように言及できます
<persistence-unit transaction-type="RESOURCE_LOCAL or JTA">
.................................
</persitence-unit>