1

yeoro·2021년 9월 16일
0
post-thumbnail

구동 방식

  1. Persistence 클래스부터 시작, persistence.xml 로부터 설정 정보 조회
  2. 설정 정보를 바탕으로 EntityManegerFactory 클래스 생성
  3. 필요할 때마다 Factory에서 EntityManager 생성

EntityMaganerFactory - DB 당 하나씩 생성
EntityManager - 요청이 올 때마다 썼다가 버렸다가 함, 쓰레드 간에 공유 금지이며 사용하고 버려야함

JPA의 모든 변경은 트랜잭션 안에서 진행해야 한다.

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

H2 의존성에 <scope>test</scope> 삭제

CREATE

Member member = new Member();
member.setId(2L);
member.setName("HelloA");
em.persist(member);

메이븐 프로젝트에서는 트랜잭션 관리를 try-catch에서 직접 해주어야 하지만, 나중에 스프링에서 다 알아서해준다.

READ

Member findMember = em.find(Member.class, 1L);
System.out.println("id : " + findMember.getId());
System.out.println("name : " + findMember.getName());

UPDATE

findMember.setName("HelloB");

JPQL, Paging

List<Member> result = em.createQuery("select m from Member as m", Member.class)
					// 1번부터 10번 가져오기
					.setFirstResult(1) 
					.setMaxResults(10) 
					.getResultList();
			
			for(Member member : result) {
				System.out.println("member.name = " + member.getName());
			}

테이블이 아닌 객체를 대상으로 검색하는 객체지향쿼리
SQL을 추상화하기 때문에 특정 데이터베이스에 의존하지 않음

0개의 댓글