
@Entity
@Getter @Setter
public class Member {
	
	@Id
	private Long id;
	
	private String name;
	
	
}
public class JpaMain {
	public static void main(String[] args) {
		// xml 설정파일 이름 <persistence-unit name="hello">
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
		EntityManager em = emf.createEntityManager();
		
		// transaction 발생
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		
		try {
			// JPQL
			// JPA는 쿼리를 짤떄 Table을 대상으로 쿼리를 짜지 않고,
			// member 객체를 통해서 쿼리를 짠다.
			List<Member> result = em.createQuery("select m from Member as m", Member.class)
						.setFirstResult(5)	// 5번 부터
						.setMaxResults(10)	// 10개 까지 가져온다
						.getResultList();
			
			for(Member member : result) {
				System.out.println("member.name = " + member.getName());
				
			}
            
			// JPA
//			// 회원 조회
//			Member findMember = em.find(Member.class, 2L);
//			System.out.println("==================================");
//			System.out.println("findMember.id : " + findMember.getId());
//			System.out.println("findMember.name : " + findMember.getName());
			
			// 회원 수정
//			findMember.setName("UpdateUser");
			
			// 회원 삭제
//			em.remove(findMember);
			
			
			// 회원 등록
			Member member = new Member();
			
			// 추가
			member.setId(3L);
			member.setName("UserC");
			
			// persist : db에 저장
			em.persist(member);
		
			tx.commit();
		}catch (Exception e) {
			tx.rollback();
		}finally {
			em.close();
			emf.close();
		}
	}
}
저장 : persist()
조회: find()
삭제: remove()
변경: 변경은 따로 함수를 호출하기보다는 find를 해서 가져온 객체에서 setter 메서드를 통해 값을 변경하면 commit()호출시 적용되기 전 시스템에서 변경감지를 통해 기존 객체와 차이점을 찾아서 업데이트를 자동으로 해준다.
엔티티(Member.class)를 대상으로 한다. JPA가 자동으로 맞춰준다.ansi가 제공하는 표준 SQL 문법을 모두 제공한다. 			// JPQL
			// JPA는 쿼리를 짤떄 Table을 대상으로 쿼리를 짜지 않고,
			// member 객체를 통해서 쿼리를 짠다.
            // 회원조회
			List<Member> result = em.createQuery("select m from Member as m", Member.class)
           				 //페이징 처리에 대한 부분이 된다.
						.setFirstResult(5)	// 5번 부터
						.setMaxResults(10)	// 10개  가져온다 
						.getResultList();
			
			for(Member member : result) {
				System.out.println("member.name = " + member.getName());