Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MSA
- 멀티스레드
- 체인 패턴
- Spring Cloud Netfilx Eureka
- Java
- TypeScript
- 사가 패턴
- Transaction Pattern
- The law of Demeter
- spring cloud
- zipkin
- 배치
- 디자인패턴
- 스레드
- 스프링 배치
- 생산자 소비자 패턴
- 알고리즘
- Serial GC
- Resilinece4j
- Parallel Old GC
- 타입스크립트
- JPA
- Action Pattern
- 키클락
- thread
- java 정렬
- spring batch
- saga pattern
- Spring Boot Actuator
- 디자인 패턴
Archives
- Today
- Total
PSD( Private-Self-Development )
JPA 사용 설정 및 사용 본문
0. JAP 사용 설정
1. pom.xml 에 하이버네이트, 사용 DB 드라이버 의존성 주입
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.11.Final</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
</dependency>
2. maven을 사용할 경우, src/main/resources/META-INF 경로에 Persistence.xml( JPA 설정 파일 ) 작성
<?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>
공식 문서 참고
1. 관계형 DB와 객체 연결
@Entity
//@Table(name="USER") // 테이블 명을 설정 해 줄 수 있다.
public class Member {
@Id // Primary 키 설정 : 필수!!
private Long id;
// @Column(name="username") // 컬럼 명을 설정 해 줄 수 있다.
private String name;
}
2. DB 연결
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
서버가 올라올 때 , DB 당 한 번만 선언되어야 한다.
3. DB 연결 생성 및 트랜잭션
// 연결 생성
EntityManager em = emf.createEntityManager();
// 트랜잭션 생성
EntityTransaction tx = em.getTransaction();
// 트랜잭션 시작
tx.begin();
// 트랜잭션 커밋
tx.commit();
4. CRUD 및 커밋
// 단건 조회
Member findMember = em.find( Member.class, 1L );
System.out.println( findMember.getName() );
// 삭제
em.remove( findMember );
// 수정
// 조회 객체의 데이터를 수정 하면
// 추후 커밋 될 때 변경사항을 자동으로 업데이트 쿼리를 날린다.
findMember.setName("HELLO! JPA!");
// 추가
Member member = new Member();
member.setId(1L);
member.setName("HelloA");
em.persist(member); // 추가
// 커밋 전에 객체에 변경사항이 있을 경우 업데이트 쿼리 날림
tx.commit();
5. JPQL
// 다건 조회
List <Member> result = em.createQuery("select m from Member as m", Member.class ) // Member 엔티티 객체 전체를 조회
.setFirstResult(5) // 시작 INDEX
.setMaxResults(10) // 조회 갯수 제한
.getResultList(); // 조회
- 객체 지향 쿼리 언어 이다.
- JPQL을 사용하면 접근 대상 DB가 달라져도
변경이 필요하지 않다. - DB 테이블이 아닌 엔티티 객체 대상 쿼리이다.
6. 연결 제거
. close() 선언
참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'Backend > JPA' 카테고리의 다른 글
JPA 의 프록시, 지연 로딩, 즉시 로딩 (0) | 2022.10.12 |
---|---|
JPA 의 상속 (0) | 2022.10.11 |
JPA의 DB 매핑 (0) | 2022.10.06 |
JPA의 영속성 컨텍스트 (0) | 2022.10.06 |
JPA 란? (0) | 2022.09.28 |