W8D3(3) - JPA
11051 ワード
プロキシサーバ
オブジェクト図面を参照して受注からメンバーを検索するか、メンバーから受注を取得します.
オブジェクト図面を参照するたびに、データベースと通信を維持する必要があります.
これを補うためにプロキシオブジェクトを導入
実際のオブジェクトをメンバーにインポートするときに関連付けられたテーブルは、エンティティではなくプロキシオブジェクトにマッピングされ、高オブジェクトを使用するときにクエリーされます.@Slf4j
@SpringBootTest
public class ProxyTest {
@Autowired
EntityManagerFactory emf;
@BeforeEach
void setUp() {
EntityManager entityManager = emf.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
// 주문 엔티티
Order order = new Order();
order.setUuid(UUID.randomUUID().toString());
order.setMemo("부재시 전화주세요.");
order.setOrderDatetime(LocalDateTime.now());
order.setOrderStatus(OPENED);
entityManager.persist(order);
// 회원 엔티티
Member member = new Member();
member.setName("kanghonggu");
member.setNickName("guppy.kang");
member.setAge(33);
member.setAddress("서울시 동작구만 움직이면쏜다.");
member.setDescription("KDT 화이팅");
member.addOrder(order); // 연관관계 편의 메소드 사용
entityManager.persist(member);
transaction.commit();
}
@Test
void proxy() {
EntityManager entityManager = emf.createEntityManager();
// 회원 조회 -> 회원의 주문 까지 조회
Member findMember = entityManager.find(Member.class, 1L);
log.info("orders is loaded : {}", entityManager.getEntityManagerFactory()
.getPersistenceUnitUtil().isLoaded(findMember.getOrders())); //프록시객체인지 확인
log.info("-------");
log.info("{}" ,findMember.getOrders().get(0).getMemo());
log.info("orders is loaded : {}", entityManager.getEntityManagerFactory()
.getPersistenceUnitUtil().isLoaded(findMember.getOrders()));
}
}
Reference
この問題について(W8D3(3) - JPA), 我々は、より多くの情報をここで見つけました
https://velog.io/@kcwthing1210/W8D33-JPA
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
@Slf4j
@SpringBootTest
public class ProxyTest {
@Autowired
EntityManagerFactory emf;
@BeforeEach
void setUp() {
EntityManager entityManager = emf.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
// 주문 엔티티
Order order = new Order();
order.setUuid(UUID.randomUUID().toString());
order.setMemo("부재시 전화주세요.");
order.setOrderDatetime(LocalDateTime.now());
order.setOrderStatus(OPENED);
entityManager.persist(order);
// 회원 엔티티
Member member = new Member();
member.setName("kanghonggu");
member.setNickName("guppy.kang");
member.setAge(33);
member.setAddress("서울시 동작구만 움직이면쏜다.");
member.setDescription("KDT 화이팅");
member.addOrder(order); // 연관관계 편의 메소드 사용
entityManager.persist(member);
transaction.commit();
}
@Test
void proxy() {
EntityManager entityManager = emf.createEntityManager();
// 회원 조회 -> 회원의 주문 까지 조회
Member findMember = entityManager.find(Member.class, 1L);
log.info("orders is loaded : {}", entityManager.getEntityManagerFactory()
.getPersistenceUnitUtil().isLoaded(findMember.getOrders())); //프록시객체인지 확인
log.info("-------");
log.info("{}" ,findMember.getOrders().get(0).getMemo());
log.info("orders is loaded : {}", entityManager.getEntityManagerFactory()
.getPersistenceUnitUtil().isLoaded(findMember.getOrders()));
}
}
Reference
この問題について(W8D3(3) - JPA), 我々は、より多くの情報をここで見つけました https://velog.io/@kcwthing1210/W8D33-JPAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol