「持続性コンテキスト」(JPA)に進む前に
入る前に。
永続性コンテキストを表示する前に、いくつかの概念を理解する必要があります.
上記の画像から分かるように、この時間にconnを直接管理するのはEntityManagerが代わります.
このEntityManagerはEntityManagerFactoryによって作成され、作成したEntityManagerからdbにアクセスできます.
プロセス全体が上記のようになります.
1. EntityManagerFactory
-アプリケーションをロードするとき、データベースごとに1つしか生成できません.
-WAS終了時にEntityManagerFactoryを閉じます.
これにより、接続プールのリソースを内部から解放できます.
ex)
persistence.xml
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="wcp_admin"/>
<property name="javax.persistence.jdbc.password" value="1234"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/wcp?serverTimezone=UTC"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
上のpersistence-unitのnameに基づいてEntityManagerFactoryを作成できますEntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello");
2. EntityManager
EntityManager entityManager = entityManagerFactory.createEntityManager();
JPAは、スレッドを作成するたびにEntityManagerFactoryにEntityManagerを作成します.
EntityManager内部でDB接続プールを使用してデータベースに接続します.
entityManager.close();
3. EntityTransaction
データの変更はTransactionで行う必要があります.
EntityManagerでEntityTransactionを管理できます.
EntityTransaction tx = entityManager.getTransaction();
永続性コンテキストとは?
エンティティを永続的に保存する環境
上記のEntity Managerを使用してEntityを変更すると、データがすぐにデータベースにロードされるわけではありません.
コミット()の前に、すなわち1つのTransaction間で実行されるEntity情報は、まずこの永続性コンテキストと呼ばれる場所に格納される.
Reference
この問題について(「持続性コンテキスト」(JPA)に進む前に), 我々は、より多くの情報をここで見つけました https://velog.io/@cham/JPA-영속성-컨텍스트Persistence-Context란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol