프로젝트 구조
Maven이면 pom.xml, Gradle이면 build.gradle 사용.
myproject/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── myproject/
│ │ │ └── JpaMain.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── persistence.xml
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── myproject/
│ │ └── MyApplicationTest.java
│ └── resources/
└── pom.xml | build.gradle
프로젝트 설정하기
메이븐 pom.xml
- 메이븐 프로젝트의 설정 파일.
- JPA를 사용하려면 JPA 구현체(여기서는 Hibernate)와 JDBC 드라이버를 의존성으로 추가
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- ... -->
<properties>
<java.version>17</java.version>
<!-- 프로젝트 코드 인코딩 설정 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<!-- JPA, 하이버네이트 -->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.3.1.Final</version>
</dependency>
<!-- MariaDB JDBC Driver -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.1.4</version>
</dependency>
<!-- 로깅 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.12</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies>
<!-- ... -->
</project>
persistence.xml 설정
- JPA 설정 파일. 데이터베이스 연결 정보와 엔티티 클래스를 설정한다.
- 사용하는 데이터베이스의 종류에 따라 <property name="javax.persistence.jdbc.driver" /> 의 value를 작성한다. (여기서는 mariadb 사용)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="jpabook">
<properties>
<!-- 필수 속성 -->
<property name="jakarta.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/>
<property name="jakarta.persistence.jdbc.user" value="[유저네임]"/>
<property name="jakarta.persistence.jdbc.password" value="[비번]"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mariadb://localhost:[설정포트]/[db이름]"/>
<!-- Hibernate properties -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MariaDBDialect" />
<!-- 옵션 -->
<property name="hibernate.hbm2ddl.auto" value="create" />
<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>
프로젝트 빌드하기
프로젝트를 실행하기 전에 pom.xml에서 프로젝트를 빌드해준다.
pom.xml에서 우클릭 > Maven > Reload project 클릭

프로젝트 동작확인하기
엔티티 클래스를 작성한다.
import jakarta.persistence.*;
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String username;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
메인 클래스를 실행해서 JPA가 잘 동작하는지 확인한다.
public class JpaMain {
public static void main(String[] args) {
//엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성
EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득
try {
tx.begin(); //트랜잭션 시작
logic(em); //비즈니스 로직
tx.commit();//트랜잭션 커밋
} catch (Exception e) {
e.printStackTrace();
tx.rollback(); //트랜잭션 롤백
} finally {
em.close(); //엔티티 매니저 종료
}
emf.close(); //엔티티 매니저 팩토리 종료
}
public 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(20); //수정
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); //삭제
}
}
콘솔에 다음처럼 출력되면 성공

'Programming 프로그래밍 > JPA' 카테고리의 다른 글
| [JPA] Java Persistence API 개념 - 엔티티 매니저, 영속성 컨텍스트 (0) | 2024.05.02 |
|---|---|
| [JPA] JPA 환경설정/ 엔티티 만들기 + MariaDB (Gradle) (0) | 2024.04.25 |
| [JPA] Java Persistence API 정리 (0) | 2024.04.25 |