Spring

[Spring Boot] JPA ๋ถ€ํ„ฐ Spring Data JPA๊นŒ์ง€

soowitty 2024. 4. 14. 12:17
๐Ÿ’ก ๋ณธ ๊ธ€์€ ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ AWS๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค ๋„์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค

 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - RDB(Relational Database)


ํ˜„๋Œ€์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Oracle, MySQL, MSSQL)๋Š” ๊ฑฐ์˜ ํ•„์ˆ˜์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

 

RDB์˜ ๋ฌธ์ œ์ 

1. ๋‹จ์ˆœ ๋ฐ˜๋ณต ์ž‘์—… ๋ฌธ์ œ

RDB๋Š” SQL๋งŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์—… ํ”„๋กœ์ ํŠธ ๋Œ€๋ถ€๋ถ„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ณด๋‹ค SQL๋กœ ๊ฐ€๋“ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๊ธฐ๋ณธ์ ์ธ CRUD๋ฅผ ๊ณ„์†ํ•ด์„œ ์ƒ์„ฑ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜ํ•ด์•ผํ•œ๋‹ค. ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ ๋‹จ์ˆœ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜๋ฐฑ ๋ฒˆ ํ•ด์•ผํ•œ๋‹ค.

2. ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜

  • RDB : ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ• ์ง€์— ์ดˆ์ ์ด ๋งž์ถฐ์ง„ ๊ธฐ์ˆ 
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด : ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ 

RDB์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์• ์ดˆ์— ์‚ฌ์ƒ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ์‹œ์ž‘์ ์—์„œ ์ถœ๋ฐœํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋‹ค๋ฅธ๋ฐ, ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. (ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜)

 

JPA์˜ ๋“ฑ์žฅ


์ƒ์†, 1:N ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ๋ชจ๋ธ๋ง์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋Š” ๊ตฌํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์€ ์ ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง์—๋งŒ ์ง‘์ค‘ํ•˜๊ฒŒ ๋œ๋‹ค. JPA๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ!!

 

JPA๋ž€?

JPA(Java Persistence API)๋ž€, ์„œ๋กœ ์ง€ํ–ฅํ•˜๋Š” ๋ฐ”๊ฐ€ ๋‹ค๋ฅธ RDB์™€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ค‘๊ฐ„์— ์กด์žฌํ•˜์—ฌ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ผ์น˜๋ฅผ ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋‹ค.

 

๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๋ƒฅ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, JPA๊ฐ€ ์ด๋ฅผ RDB์— ๋งž๊ฒŒ SQL์„ ๋Œ€์‹  ์ƒ์„ฑํ•ด์„œ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ๋”์ด์ƒ SQL์— ์ข…์†์ ์ธ ๊ฐœ๋ฐœ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ๋งŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ์—๋„ ํ›จ์”ฌ ํŽธ๋ฆฌํ•˜๋‹ค.

 

JPA๋Š” Java ORM(Object Relational Mapping) ๊ธฐ์ˆ ์— ๋Œ€ํ•œ API ํ‘œ์ค€ ๋ช…์„ธ์ด๋‹ค. ํŠน์ • ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ์•„๋‘” ๊ฒƒ์ด๋‹ค. ์ฆ‰, Java์—์„œ RDB๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ๊ฒƒ์ด๋‹ค.

 

 

Hibernate


JPA๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ์„œ, ์ž๋ฐ” ํ‘œ์ค€๋ช…์„ธ์„œ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

JPA๋ฅผ ๊ตฌํ˜„ํ•œ ORM ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Hibernate, EclipseLink๊ฐ€ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ด๋‹ค. ๊ทธ์ค‘, Hibernate๊ฐ€ ๋ฒ”์šฉ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

JPA์™€ Hibernate์˜ ๊ด€๊ณ„๋Š”, Java์—์„œ interface์™€ ํ•ด๋‹น interface๋ฅผ ๊ตฌํ˜„ํ•œ class์™€ ๊ฐ™์€ ๊ด€๊ณ„๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

 

์œ„ ๊ทธ๋ฆผ์€ JPA์™€ Hibernate์˜ ์ƒ์† ๋ฐ ๊ตฌํ˜„ ๊ด€๊ณ„๋ฅผ ๋„์‹ํ™”ํ•œ ๊ฒƒ์ด๋‹ค.

 

JPA์˜ ํ•ต์‹ฌ ์ธํ„ฐํŽ˜์ด์Šค์ธ EntityManagerFactory, EntityManager, EntityTransaction์„ Hibernate์—์„œ ๊ฐ๊ฐ SesseionFactory, Session, Transaction์œผ๋กœ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๊ฐ๊ฐ SessionFactoryImpl, SessionImpl, TransactionImpl๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€, JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ Hibernate๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์–ธ์ œ๋“ ์ง€ EclipseLink ๋“ฑ์˜ ๋‹ค๋ฅธ JPA ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.

 

 

Spring Data JPA


Spring์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Hibernate ๋“ฑ์˜ ๊ตฌํ˜„์ฒด๋“ค์„ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. ๊ตฌํ˜„์ฒด๋“ค์„ ์ข€ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ ์ž ์ถ”์ƒํ™” ์‹œํ‚จ Spring Data JPA๋ผ๋Š” ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ๋‹ค.

 

Spring Data JPA๋Š” JPA๋ฅผ ํ•œ ๋‹จ๊ณ„ ์ถ”์ƒํ™”์‹œํ‚จ Repository๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง„๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ Reopository์— ์ •ํ•ด์ง„ ๊ทœ์น™๋Œ€๋กœ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, Spring์ด ์ž๋™์œผ๋กœ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์— ์ ํ•ฉํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ Bean์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.

 

Spring Data JPA๊ฐ€ JPA๋ฅผ ์ถ”์ƒํ™”ํ–ˆ๋‹ค๋Š” ๋ง์€, Spring Data JPA์˜ Repository๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, JPA๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Repository ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์ฒด์ธ SimpleJpaRepository์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด๋ถ€์ ์œผ๋กœ EntityManager(JPA์˜ ํ•ต์‹ฌ ์ธํ„ฐํŽ˜์ด์Šค)์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

 

package org.springframework.data.jpa.repository.support;

import ...

public class SimpleJpaRepository<T, ID> implements JpaRepositoryImplementation<T, ID> {

    private final EntityManager em;

    public Optional<T> findById(ID id) {

        Assert.notNull(id, ID_MUST_NOT_BE_NULL);

        Class<T> domainType = getDomainClass();

        if (metadata == null) {
            return Optional.ofNullable(em.find(domainType, id));
        }

        LockModeType type = metadata.getLockModeType();

        Map<String, Object> hints = getQueryHints().withFetchGraphs(em).asMap();

        return Optional.ofNullable(type == null ? em.find(domainType, id, hints) : em.find(domainType, id, type, hints));
    }

    // Other methods...
}

 

Spring Data JPA ๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ Spring ์ง„์˜์—์„œ๋Š” Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

1. ๊ตฌํ˜„์ฒด ๊ต์ฒด์˜ ์šฉ์ด์„ฑ

Hibernate ์™ธ์— ๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. Spring Data JPA ๋‚ด๋ถ€์—์„œ ๊ตฌํ˜„์ฒด ๋งคํ•‘์„ ์ง€์›ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ JPA ๊ตฌํ˜„์ฒด๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋งŒ์•ฝ Hibernate๊ฐ€ ์ˆ˜๋ช…์„ ๋‹คํ•ด์„œ ์ƒˆ๋กœ์šด JPA ๊ตฌํ˜„์ฒด๊ฐ€ ๋Œ€์„ธ๋กœ ๋– ์˜ค๋ฅด๊ฒŒ ๋˜๋ฉด, Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋งค์šฐ ์‰ฝ๊ฒŒ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

 

2. ์ €์žฅ์†Œ ๊ต์ฒด์˜ ์šฉ์ด์„ฑ

RDB(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) ์™ธ์— ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์„œ๋น„์Šค ์ดˆ๊ธฐ์—๋Š” RDB๋กœ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ, ์ ์  ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์ ธ RDB๋กœ๋Š” ๋„์ €ํžˆ ๊ฐ๋‹น์ด ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ MongoDB๋กœ ๊ต์ฒด๋ฅผ ์›ํ•œ๋‹ค๋ฉด, ๊ฐœ๋ฐœ์ž๋Š” Spring Data JPA์—์„œ Spring Data MongoDB๋กœ ์˜์กด์„ฑ๋งŒ ๊ต์ฒดํ•˜๋ฉด ๋œ๋‹ค.

Spring Data์˜ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๋“ค์€ ๊ธฐ๋ณธ์ ์ธ CRUD ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ €์žฅ์†Œ๊ฐ€ ๊ต์ฒด๋˜์–ด๋„ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ


  • JPA๋Š” ๊ธฐ์ˆ  ๋ช…์„ธ์ด๊ณ , ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋‹ค!!
  • Hibernate๋Š” JPA์˜ ๊ตฌํ˜„์ฒด์ด๋‹ค.
  • SpringData JPA๋Š” JPA๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋“ˆ์ด๋‹ค.

 

 

์œ„ ๊ทธ๋ฆผ์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, Hibernate, JPA, Spring Data JPA์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์žฅ ์ž˜ ํ‘œํ˜„ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

 

+) JDBC - Java DataBase Connectivity


์œ„์˜ ๊ทธ๋ฆผ์— ๊ธ€์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์€ JDBC๊ฐ€ ์žˆ์–ด์„œ ์ž ๊น ์–ธ๊ธ‰ํ•˜๊ณ  ๊ธ€์„ ๋งˆ์น˜๊ฒ ๋‹ค.

 

JDBC(Java DataBase Connectivity)๋Š” Java API์ด๋‹ค. Java ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅ ๋ฐ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, DB์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Java์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ฆ‰, Java์™€ DB ์‚ฌ์ด์— ์กด์žฌํ•˜์—ฌ ๋‘˜์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ!

 

 

์ด ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํ™• ์™€๋‹ฟ์„ ๊ฒƒ์ด๋‹ค.

 

 

์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์•„๋ž˜ ๊ธ€์„ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ •๋ง ์ƒ์„ธํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

[Java] JDBC๋ž€ ๋ฌด์—‡์ธ๊ฐ€? - Java Database Connectivity

 

[Java] JDBC๋ž€ ๋ฌด์—‡์ธ๊ฐ€? - Java Database Connectivity

JDBC๋ž€? JDBC(Java Database Connectivity)๋Š” Java ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ ๋ฐ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Java์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API์ด๋‹ค. JDB

ittrue.tistory.com

 

 

 

Reference


 

 

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] AOP  (0) 2024.01.22
[Spring] welcome page ๋งŒ๋“ค๊ธฐ  (2) 2024.01.03