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 |
Tags
- db설계과정
- 포링키
- Python
- 준태튜터님
- db설계방법
- 스파르타코딩
- 코딩
- 팀스파르타
- spring필수문법
- 스파르타코딩클럽
- JPA
- 릴레이션십데이터베이스
- 파이썬
- 데이터베이스네이밍규칙
- django
- 내일배움캠프
- db네이밍규칙
- dbnamingrule
- 데이터베이스설계요약
- 스파코
- db설계핵심요약
- 리콰이어먼츠 설정
- 장고
- 장고기초지식
- 패스트캠퍼스
- jakartapersistenceapi
- jpa플러시
- tableperclass
- 자기계발회고
- 프라이머리키
Archives
- Today
- Total
당우 일기장
JPA 시작하기 본문
기본 세팅 설정
build.gradle
// https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core
implementation group: 'org.hibernate.orm', name: 'hibernate-core', version: '6.6.10.Final'
// https://mvnrepository.com/artifact/jakarta.persistence/jakarta.persistence-api
implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0'
// https://mvnrepository.com/artifact/com.mysql/mysql-connector-j
implementation("com.mysql:mysql-connector-j:8.3.0")
// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
implementation("ch.qos.logback:logback-classic:1.5.16")
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
META-INF
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.2">
<!-- 엔티티 매니저 팩토리를 식별하기 위한 이름 설정 -->
<persistence-unit name="jpa-lecture">
<properties>
<!-- 데이터 베이스 연결 정보 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="유저아이디"/>
<property name="javax.persistence.jdbc.password" value="비밀번호"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/어쩌구"/>
<!-- hibernate 설정 (실행 되는 sql의 생성) -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<!-- hibernate 설정 (실행 되는 sql 구문을 format 형태로 보여준다) -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
<persistence-unit name="jpa-lesson">
<properties>
<!-- 데이터 베이스 연결 정보 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value=""/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/"/>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<!-- hibernate 설정 (실행 되는 sql 구문을 format 형태로 보여준다) -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
logback.xml
<configuration>
<!-- 모든 로깅 비활성화 -->
<logger name="org.hibernate" level="OFF"/>
<root level="OFF"/>
</configuration>
이건 TMI
데이터베이스 방언
1.JPA는 특정 데이터베이스에 종속되지않는다
2.각각의 데이터베이스가 제공하는 SQL문법과 함수는 조금씩 다름
2-1 가변문자:mysql은 varchar, 오라클은 varchar2
2-2 문자열을 자르는 함수 sql 표준은 substring() 오라클은 substr()
2-3 페이징: mysql은 limit 오라클은 rownum
방언: sql 펴준을 지키지않는 특정 데이터베이스만의 고유한 기능
JPA 의 구동방식
persistence 에서 시작
실습 - JPA 동작 확인
jpaMain 클래스 생성
JPA 동작 확인
Application의 기본 뼈대
package com.jpatest
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("엔티티 매니저 팩토리를 식별하기 위한 이름");
EntityManager em = emf.createEntityManager();
em.clear();
emf.close();
}
}
객체와 테이블을 생성하고 매핑하기
@Entity : JPA가 관리할 객체
@Id : 데이터베이스 PK와 매핑
jpa 연습용 데이터베이스를 하나 만들어주자
CREATE DATABASE jpatestdb;
use jpatestdb;
create table Member(
id bigint not null,
name varchar(255),
primary key (id)
);
CREATE DATABASE jpatestdb;
use jpatestdb;
create table Member(
id bigint not null,
name varchar(255),
primary key (id)
);
이렇게 하나씩 순차적으로 실행해주자
대충 jpatestdb 라는 데이터베이스를 만들어주고
member 라는 테이블을 만들고
id name 을 만들어주고 id를 pk로 만들어주었다
Member 뼈대
package com.hellojpa;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@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-unit name="안알랴줌">
<class>com.hellojpa.Member</class>
<properties>
class 추가
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa-lecture");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Member member = new Member();
member.setId(1L);
member.setName("HelloA");
tx.commit();
em.persist(member);
em.clear();
emf.close();
그리고 main 에다가 트랜젝션과 member 변수 추가
'JPA' 카테고리의 다른 글
JPA 기본 뼈대 (0) | 2025.04.08 |
---|---|
플러시 (0) | 2025.04.08 |
영속성 컨텍스트 (0) | 2025.04.08 |
JPA 상속 기법: 다중테이블 전략으로 회원 도메인 설계하기 (1) | 2025.04.08 |
JPA상속기법(inheritance)싱글테이블,조인테이블,다중테이블 (3) | 2025.04.08 |