create table Member (
id bigint not null,
name varchar(255),
primary key(id)
);
간단한 테이블을 생성한 뒤, hellojpa 패키지 내에 Member 클래스를 생성합니다.이후 아래와 같이 Entity를 생성해줍니다.
@Getter
@Setter
@Entity
public class Member {
@Id //primary key 설정
private Long id;
private String name;
}
이후 JPAMain이라는 클래스에 psvm을 통해서 실행가능한 함수를 만들고, 아래 코드를 통해 JPA를 사용해봅시다.
아래 코드에 눈여겨볼만한 부분은 em.getTransaction()메서드인데 이는 JPA의 모든 데이터 변경(CRUD)는 트랜잭션 내에서 일어나야하기에 트랜잭션을 생성하는 메서드입니다.
사실 EntityManagerFactory, EntityTransaction 같은 것들은 스프링을 사용할 경우 스프링에서 알아서 설정해줍니다.그래도 순수 JPA를 위해서는 알아두는게 좋습니다
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
Member member = new Member();
member.setId(1L);
member.setName("helloJPA");
em.persist(member);
tx.commit();
em.close();
ef.close();
}
아래와 같이 멤버가 생성되는 것을 확인 할 수 있습니다.
로그를 보시면 Insert 쿼리가 DB로 날라간것을 볼 수 있을 겁니다.
이번에는 해당 멤버의 이름을 수정해보겠습니다.
아래와 같은 코드를 실행하면 마법같이 해당 멤버가 수정되어 있습니다.
수정을 한 경우, Entity Manager를 통해 다시 persist할 필요는 없습니다.
Member findMember = em.find(Member.class, 1L);
findMember.setName("updatedName");
JPQL 사용해보기
먼저 JPQL 이란? 우리가 생성한 Entity Object(해당 예제에서는 Member)를 대상으로 하는 쿼리문이라고 보면됩니다. 흔히 배우는 SQL과 비슷한 문법을 가지지만, SQL은 쿼리의 대상이 TABLE이라는 것이 차이점입니다.
아래의 createQuery 메서드를 통해 생성 가능하며, 아래 JPQL은 Member 테이블의 모든 멤버를 가져오라는 의미를 가지고 있습니다.
List<Member> findAllMember = em.createQuery("select m from Member as m",Member.class)
.getResultList();
for (Member member : findAllMember) {
System.out.println("member= " + member.getName());
}
Refer
<김영한>님의 자바 ORM 표준 JPA 프로그래밍 - 기본편
You might also like...
6월
04
친절한 SQL 튜닝 - 2. 인덱스 구조 및 탐색
미리 보는 인덱스 튜닝특정 데이터를 찾는 방법은 크게 아래의 두 가지로 나뉜다. 테이블 전체를 스캔한다.인덱스를 이용한다.찾으려는 데이터가 중복이
15 min read
6월
01
<Redis> 레디스 활용해서 N개의 랜덤 데이터 가져오기
우선 개발 중인 서버의 요구사항은 아래와 같습니다. Chosung 이라는 테이블이 있고 해당 테이블에서 클라이언트에게 전달될 랜덤한 N개의 초성 데이터를 뽑아내야합니다.
10 min read
7월
11
<DB> JDBC 트랜잭션에서 Spring의 @Transactional까지
이전 포스팅까지 저희는 JDBC 기술에 의존하여 Transaction을 적용시켜 보았습니다.만약 현재의 상황에서 JDBC 말고 JPA를 사용한다고 가정하면 서비스 계층의 모든
12 min read
7월
10
<DB> Java에서 스프링 없이 트랜잭션 적용하기
우선 해당 내용은 MVC 패턴 기반하에서 코드가 작성됩니다.사실 저희가 사용하는 Spring이나 다른 프레임워크들은 아래에 나올 일련의 과정을 좀 더
7 min read
6월
28
<DB> Transaction과 Lock 이해하기
개발을 하시면서 Transaction이라는 용어를 정말 많이 들어보셨을 것입니다.저 또한 용어의 정확한 의미는 모른채 사용했었습니다.예를 들어 “뭐 대충 데이터에