JPA는 어떻게 설정할까?
의존성 추가 (Gradle)
--
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// JPA 라이브러리
implementation 'org.postgresql:postgresql'
// 사용할 DB
}
--
application.yml (또는 application.properties) 설정
--
application.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydatabase # 연결할 DB url
username: myuser # DB 사용자 이름
password: mypassword # DB 비밀번호
driver-class-name: org.postgresql.Driver # 사용할 DB의 JDBC 드라이버
jpa:
hibernate:
ddl-auto: update # create, update, validate, none 설정 가능
show-sql: true # SQL 쿼리 출력 여부
properties:
hibernate:
format_sql: true # SQL을 보기 좋게 정렬
dialect: org.hibernate.dialect.PostgreSQLDialect # Hibernate가 사용할 SQL 문법 설정
사실상 필수는 url, username, password이며
driver-class-name: org.postgresql.Driver는
Spring Boot가 url을 보고 자동으로 적절한 드라이버로 로드하기 때문에 생략 가능하고,
hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect도
url을 보고 자동으로 선택해 주지만 운영 환경에 따라 변수가 생길 수 있으니
명시적으로 직접 지정해주는 것이 더 안전하긴 하다.
그리고 나머지는 사용할 DB에 대한 부가적인 설정을 하는 것으로
하고자 하는 환경에 알맞게 설정해 주면 된다.
--
JPA 사용해보기
--
엔티티 (Entity)
엔티티는
데이터베이스의 테이블과 매핑되는 객체로
DB의 테이블 구조를 코드로 표현한 클래스다.
해당 객체는 DB의 테이블의 컬럼과 매핑되며, 데이터를 객체로 다룰 수 있도록 도와주고
JPA가 자동으로 SQL을 생성하고 실행할 수 있도록 도와준다.
Member.java
@Entity
public class Member {
@Id
private Long id;
private String name;
}
@Entity : JPA가 관리할 객체
@Id : 데이터베이스의 PK와 매핑
위 코드처럼 엔티티를 정의하면 DB의 테이블처럼 연결하여 사용할 수 있다.
Craete table Member (
id bigint not null,
name varchar(255),
primary key (id)
);
리포지토리 (Repository)
JPA를 쉽게 사용할 수 있도록 JpaRepository를 상속받는 인터페이스로
엔티티를 DB에서 조회, 저장, 삭제하는 역할을 해준다.
즉, DB와 직접 통신하는 계층으로
SQL을 직접 작성하지 않고, JPA 메서드를 통해 자동으로 원하는 SQL을 실행해 준다.
UserRepository.java
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
}
위 코드는 아래와 같은 SQL문을 실행하는 메서드를 제공한다.
SELECT * FROM users WHERE email = ?;
사용 예시
User user = userRepository.findByEmail("aaa@gmail.com");
--
'JPA' 카테고리의 다른 글
상속관계 매핑 (+@MappedSuperclass) (1) | 2025.04.01 |
---|---|
연관관계 매핑 (단방향, 양방향, 1:1, 1:N, N:1, N:N) (0) | 2025.03.31 |
엔티티(Entity) 매핑 (= 객체와 DB 테이블 연결) (0) | 2025.03.30 |
영속성 관리 (내부 동작 방식) (0) | 2025.03.29 |
JPA 개념 (0) | 2023.12.30 |
JPA는 어떻게 설정할까?
의존성 추가 (Gradle)
--
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// JPA 라이브러리
implementation 'org.postgresql:postgresql'
// 사용할 DB
}
--
application.yml (또는 application.properties) 설정
--
application.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydatabase # 연결할 DB url
username: myuser # DB 사용자 이름
password: mypassword # DB 비밀번호
driver-class-name: org.postgresql.Driver # 사용할 DB의 JDBC 드라이버
jpa:
hibernate:
ddl-auto: update # create, update, validate, none 설정 가능
show-sql: true # SQL 쿼리 출력 여부
properties:
hibernate:
format_sql: true # SQL을 보기 좋게 정렬
dialect: org.hibernate.dialect.PostgreSQLDialect # Hibernate가 사용할 SQL 문법 설정
사실상 필수는 url, username, password이며
driver-class-name: org.postgresql.Driver는
Spring Boot가 url을 보고 자동으로 적절한 드라이버로 로드하기 때문에 생략 가능하고,
hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect도
url을 보고 자동으로 선택해 주지만 운영 환경에 따라 변수가 생길 수 있으니
명시적으로 직접 지정해주는 것이 더 안전하긴 하다.
그리고 나머지는 사용할 DB에 대한 부가적인 설정을 하는 것으로
하고자 하는 환경에 알맞게 설정해 주면 된다.
--
JPA 사용해보기
--
엔티티 (Entity)
엔티티는
데이터베이스의 테이블과 매핑되는 객체로
DB의 테이블 구조를 코드로 표현한 클래스다.
해당 객체는 DB의 테이블의 컬럼과 매핑되며, 데이터를 객체로 다룰 수 있도록 도와주고
JPA가 자동으로 SQL을 생성하고 실행할 수 있도록 도와준다.
Member.java
@Entity
public class Member {
@Id
private Long id;
private String name;
}
@Entity : JPA가 관리할 객체
@Id : 데이터베이스의 PK와 매핑
위 코드처럼 엔티티를 정의하면 DB의 테이블처럼 연결하여 사용할 수 있다.
Craete table Member (
id bigint not null,
name varchar(255),
primary key (id)
);
리포지토리 (Repository)
JPA를 쉽게 사용할 수 있도록 JpaRepository를 상속받는 인터페이스로
엔티티를 DB에서 조회, 저장, 삭제하는 역할을 해준다.
즉, DB와 직접 통신하는 계층으로
SQL을 직접 작성하지 않고, JPA 메서드를 통해 자동으로 원하는 SQL을 실행해 준다.
UserRepository.java
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
}
위 코드는 아래와 같은 SQL문을 실행하는 메서드를 제공한다.
SELECT * FROM users WHERE email = ?;
사용 예시
User user = userRepository.findByEmail("aaa@gmail.com");
--
'JPA' 카테고리의 다른 글
상속관계 매핑 (+@MappedSuperclass) (1) | 2025.04.01 |
---|---|
연관관계 매핑 (단방향, 양방향, 1:1, 1:N, N:1, N:N) (0) | 2025.03.31 |
엔티티(Entity) 매핑 (= 객체와 DB 테이블 연결) (0) | 2025.03.30 |
영속성 관리 (내부 동작 방식) (0) | 2025.03.29 |
JPA 개념 (0) | 2023.12.30 |