728x90
반응형
- 객체와 테이블을 생성하고 매핑
- Member 테이블 생성
- drop table member;
- create table member ( id bigint not null, name varchar(255), primary key (id) );
- Member 클래스 생성
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity //JPA를 사용하는, JPA가 관리할 객체
public class Member {
@Id //데이터베이스 PK와 매핑
private Long id;
private String name;
//Getter, Setter
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;
}
}
- @Entity
- JPA가 관리할 객체
- @Id:
- 데이터베이스 PK와 매핑
- 회원 등록
public class JpaMain {
public static void main(String[] args){
EntityManagerFactory emf=Persistence.createEntityManagerFactory("hello");
//persistence.xml에서 persistence-unit name 으로 지정한 이름 "hello"
EntityManager em=emf.createEntityManager();
/**JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다*/
EntityTransaction tx=em.getTransaction();
tx.begin();
Member member=new Member();
member.setId(1L);
member.setName("helloA");
em.persist(member);
tx.commit(); //커밋해줘야 반영된다
/***/
em.close();
emf.close();
}
}
☆☆☆ JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다 ☆☆☆
- JPA에서 데이터를 변경하는 모든 작업은 꼭 트랜잭션이라는 단위 안에서 작업되어야 한다.
- JPA 정석 코드 (주로 이렇게 쓴다) →스프링이 이 코드들을 자동으로 만들어준다!
public class JpaMain {
public static void main(String[] args){
EntityManagerFactory emf=Persistence.createEntityManagerFactory("hello");
//persistence.xml에서 persistence-unit name 으로 지정한 이름 "hello"
EntityManager em=emf.createEntityManager();
/**JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다*/
EntityTransaction tx=em.getTransaction();
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(); //사용끝난후, 꼭 닫아줘야함
}
/***/
emf.close();
}
}
- 회원 단건 조회
try{
Member findMember=em.find(Member.class, 1l);
System.out.println("findMember.id= "+findMember.getId());
System.out.println("findMember.name= "+findMember.getName());
tx.commit();
}
- 회원 수정
try{
Member findMember=em.find(Member.class, 1l);
findMember.setName("helloJPA");
tx.commit();
}
- 회원 삭제
try{
Member findMember=em.find(Member.class, 1l);
em.remove(findMember);
tx.commit();
}
- 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유
- 엔티티 매니저는 쓰레드 간에 공유X , 사용하고 버려야( em.close(); ) 한다.
728x90
반응형
'JPA Tutorial' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍 5] Hello JPA - JPQL (0) | 2023.09.16 |
---|---|
[자바 ORM 표준 JPA 프로그래밍 3] Hello JPA - 프로젝트 생성 (0) | 2023.09.13 |
[자바 ORM 표준 JPA 프로그래밍 2] ORM 기술, JPA (0) | 2023.09.12 |
[자바 ORM 표준 JPA 프로그래밍 1] SQL 중심적인 개발의 문제점 (0) | 2023.09.12 |
[자바 ORM 표준 JPA 프로그래밍 0] JPA 공부 목표 (0) | 2023.09.09 |