일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Spring Batch
- kusitms
- springboot
- 최범균
- 교육기획팀원
- JPQL
- rabbitmq-delayed-message-exchange
- RESTClient
- delayed message plugin
- jdbc
- 자바 ORM 표준 JPA 프로그래밍
- 도메인 주도 개발 시작하기
- 이펙티브자바
- 밋업프로젝트
- Domain Driven Design
- 객체지향 쿼리 언어
- java
- scheduling messages with rabbitmq
- 30기
- 영속성
- 자동처리
- 한국대학생it경영학회
- GitHub Actions
- 큐시즘
- JPA
- reactive operaton
- cicd
- ddd
- Spring
- 교육기획팀
Archives
- Today
- Total
코딩은 마라톤
[자바 ORM 표준 JPA 프로그래밍] 2장. Java + Gradle 설정 본문
책에 나온 설정 방법
- 이클립스
- Java 1.6
- Maven
- H2 1.4.187
변경 사항
- IntelliJ 인텔리제이
- Java 11
- Gradle
- H2 2.1.214
build.gradle
dependencies {
implementation 'org.hibernate:hibernate-entitymanager:5.6.15.Final'
implementation 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final'
runtimeOnly 'com.h2database:h2:2.1.214'
/* java 11일 경우 설치 */
implementation 'javax.xml.bind:jaxb-api:2.3.0'
compileOnly 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
}
- 기존 (Maven)
- hibernate-entitymanager
- H2 database
- 추가 (Gradle)
- javax.persistence:hibernate-jpa
- javax.xml.bind:jaxb-api (Java 11 일 경우 필히 설치해준다.)
- lombok (getter, setter를 쓰기 위해 추가하였다.)
- 필수
- H2 database에 버전을 꼭 명시해줘야한다. (그렇지 않을 경우, persistence.xml에 jdbc.driver가 찾지 못하는 상황 발생)
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="JAVA-ORM-JPA">
<class>start.Member</class>
<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.id.new_generator_mappings" value="true"/>
</properties>
</persistence-unit>
</persistence>
- 필자는 스프링 프레임워크를 사용하지 않았기 때문에 하위 부분을 추가해야 환경에서 엔티티 클래스를 찾을 수 있다.
<class>본인의 엔티티 Path</class>
Member
package start;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name = "MEMBER")
@Getter
@Setter
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String username;
private Integer age;
}
JpaMain
package start;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class JpaMain {
public static void main(String[] args) {
/* 엔티티 매니저 팩토리 - 생성 */
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JAVA-ORM-JPA");
/* 엔티티 매니저 - 생성 */
EntityManager em = emf.createEntityManager();
/* 트랜잭션 - 획득 */
EntityTransaction tx = em.getTransaction(); // 트랜잭션 API
try {
tx.begin(); /* 트랜잭션 - 시작 */
logic(em); /* 비즈니스 로직 - 실행 */
tx.commit(); /* 트랜잭션 - 커밋 */
} catch (Exception e) {
tx.rollback(); /* 트랜잭션 - 롤백 */
} finally {
em.close(); /* 엔티티 매니저 - 종료 */
}
emf.close(); /* 엔티티 매니저 팩토리 - 종료 */
}
/* 비즈니스 로직 */
private static void logic(EntityManager em) {
String id = "id1";
Member member = new Member();
member.setId(id);
member.setUsername("성민");
member.setAge(2);
// 등록
em.persist(member);
// 수정
member.setAge(24);
// 한 건 조회
Member findMember = em.find(Member.class, id);
System.out.println("findMember= " + findMember.getUsername() + ", age= " + findMember.getAge());
// 목록 조회
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
System.out.println("members.size = " + members.size());
// 삭제
em.remove(member);
}
}
'Backend > JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 5장. 연관관계 매핑 기초 (0) | 2024.02.04 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 4장. 엔티티 매핑 (0) | 2024.02.02 |
[자바 ORM 표준 JPA 프로그래밍] 3장. 영속성 관리 (0) | 2024.01.29 |
[자바 ORM 표준 JPA 프로그래밍] 1장. JPA 소개 (1) | 2024.01.27 |
Entity Listener의 활용 (AuditingEntityListener) (0) | 2023.11.03 |