build.gradle
testImplementation group: 'com.h2database', name: 'h2', version: '1.4.199'
->
implementation group: 'com.h2database', name: 'h2', version: '1.4.199'
java 버전 11버전 이상 사용시
// https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
디펜던시의 추가가 필요하다.
package hellojpa;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
//@Table(name = "USER") 테이블 명 있을때
public class Member {
@Id
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class JpaMain {
public static void main(String[] arg){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //db당 1개 애플리케이션 전체에서 공유
EntityManager em = emf.createEntityManager(); //요청이 올때마다 썻다가 버렸다가 쓰래드 간 공유는 절대 하면 안된다.
EntityTransaction tx = em.getTransaction(); // jap의 모든 데이터 변경은 트랜잭션 안에서 실행
tx.begin();
// 입력
// try{
// Member member = new Member();
//
// member.setId(2L);
// member.setName("HelloB");
// em.persist(member);
//
// tx.commit();
// } catch (Exception e){
// tx.rollback();
// } finally {
// em.close();
// }
// 불러오기 ,삭제
// try{
// Member findMember = em.find(Member.class,1L);
// System.out.println(findMember.getId());
// System.out.println(findMember.getName());
//
// em.remove(findMember);
//
// tx.commit();
// } catch (Exception e){
// tx.rollback();
// } finally {
// em.close();
// }
// try{
// Member findMember = em.find(Member.class,2L);
// findMember.setName("HelloJPA");
// em.persist(findMember);
//
// tx.commit();
// } catch (Exception e){
// tx.rollback();
// } finally {
// em.close();
// }
try{
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(10)
.getResultList();
for (Member member : result){
System.out.println("ttttttt=" + member.getName());
}
tx.commit();
} catch (Exception e){
tx.rollback();
} finally {
em.close();
}
emf.close();
}
}
해당 쿼리는 JPQL으로 엔티티 객체를 중심으로 개발 할수 있는 쿼리이다.