EntityMaganerFactory - DB 당 하나씩 생성
EntityManager - 요청이 올 때마다 썼다가 버렸다가 함, 쓰레드 간에 공유 금지이며 사용하고 버려야함
JPA의 모든 변경은 트랜잭션 안에서 진행해야 한다.
Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
H2 의존성에 <scope>test</scope>
삭제
Member member = new Member();
member.setId(2L);
member.setName("HelloA");
em.persist(member);
메이븐 프로젝트에서는 트랜잭션 관리를 try-catch에서 직접 해주어야 하지만, 나중에 스프링에서 다 알아서해준다.
Member findMember = em.find(Member.class, 1L);
System.out.println("id : " + findMember.getId());
System.out.println("name : " + findMember.getName());
findMember.setName("HelloB");
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을 추상화하기 때문에 특정 데이터베이스에 의존하지 않음