- 구동 방식
1) persistence.xml을 통해 데이터 베이스를 연결하여 EntityManagerFactory를 생성한다
2) 고객의 요청에 따라 EntityManger를 생성하여 작업을 해야한다
3) JPA의 모든 데이터 변경은 EntitiyManger로 생성된 트랜잭션 안에서 실행한다
4) 커밋을 할때까지 실제 데이터 베이스의 데이터는 바뀌지 않음
- Example
※ Member.class
@Entity와 @Id를 지정해줘야 jpa에서 인식함
@Entity
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;
}
}
※ persistence.xml
persistence 설정 xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
※ JpaMain.class
컬렌션이나 JPQL을 통해 데이터를 객체처럼 사용할 수 있다.
package hello.jpa;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.List;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try{
/*Member findMember = em.find(Member.class, 1L);
findMember.setName("HelloJPA");*/
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setMaxResults(2)
.getResultList();
for (Member member : result) {
System.out.println("member = " + member.getName());
}
tx.commit();
}catch (Exception e) {
tx.rollback();
}finally {
em.close();
}
emf.close();
}
}
'JAVA > JPA' 카테고리의 다른 글
(JPA) 연관 관계 (0) | 2021.06.29 |
---|---|
(JPA) 기본키 (0) | 2021.06.28 |
(JPA) 테이블 매핑 어노테이션 (3) | 2021.06.27 |
(JPA) 영속성 컨텍스트 (0) | 2021.06.26 |
(Spring Boot) JPA (0) | 2021.06.25 |