감자의 개발공부 일지

[Spring/SpringBoot] 기본 파악하기2 (ORM, JPA, JDBC, Mybatis) 본문

JAVA/Spring / Springboot

[Spring/SpringBoot] 기본 파악하기2 (ORM, JPA, JDBC, Mybatis)

Elie_J 2022. 11. 3. 13:57
반응형

ORM

웹 서비스는 데이터를 처리할때 데이터베이스를 사용해야한다. 보통 데이터베이스를 사용할려면 SQL쿼리를 작성하고 실행하는 방식의 과정이 필요한다. 이때 ORM(Object Relational Mapping)을 이용하면 쿼리를 직접 사용하지 않고 자바 문법을 사용해서 데이터베이스의 데이터를 처리할 수 있다.

 

ORM의 장점

ORM을 사용하면 데이터베이스 종류에 상관 없이 일관된 코드를 유지할 수 있어 프로그램 유지,보수가 편하며 개발자가 달라도 통일된 쿼리 및 오류 발생률을 줄일 수 있다.

 

JPA

Java Persistence API로, 자바 진영에서 ORM의 기술 표준으로 사용하는 인터페이스 모음으로 스프링부트는 JPA를 사용하여 데이터베이스를 처리한다. 가장 대중적인 프레임워크에는 Hibernate(하버네이트)가 있다.

 

JPA의 장단점

JPA는 생산성이 뛰어나지만, 학습시간이 길고, 복잡한 쿼리를 처리할때 힘들다는 단점이 있다.

 

+ spring boot JPA 설정

#JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect //데이터베이스 엔진 종류 설정
spring.jpa.hibernate.ddl-auto=update //엔티티를 기준으로 테이블을 생성하는 규칙 정의

/* spring.jpa.hibernate.ddl-auto=????
 * ????에 들어갈 설정값 알아보기
 * none : 티티가 변경되더라도 데이터베이스를 변경하지 않음
 * update : 티의 변경된 부분만 적용
 * validate : 경사항이 있는지 검사만 진행
 * create : 프링부트 서버가 시작될때 모두 drop하고 다시 생성
 * create-drop : create와 동일하지만 종료시에도 모두 drop
 * 보통의 개발환경은 update모드, 운영환경은 none을 주로 사용
 */

 

JDBC

Java Database Connectivity로 DB에 접근 할 수 있도록 Java에서 제공하는 API이다.

JDBC DriverManager가 DB 제품에 따른 드라이버를 생성하여 JDBC API에 맞게 동작 할 수 있도록 처리

 

Mybatis

객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 사용할 수 있게 해주는 개발 프레임 워크 

SQL 결과를 자바 빈즈나 MAP 객체에 매핑해주는 Persistence 솔루션으로 관리 한다. SQL을 소스 코드가 아닌 XML로 분리한다. SQL문과 프로그래밍 코드를 분리해서 구현하고 데이터소스 기능과 트랜잭션 처리 기능을 제공한다.

Mybatis의 장단점

배우거나 접근하기 쉽고 코드가 간결하다, SQL문과 프로그래밍 코드가 분리되어 있어서 SQL문에 변경이 있을때마다 자바 코드를 수정하거나 컴파일 하지 않아도 된다. 다양한 프로그래밍 언어로 구현이 가능하다.

그러나 반복되는 쿼리가 발생하여 반복 작업이 있다. 쿼리를 직접 작성하여 데이터베이스에 종속된 쿼리문이 발생할 수 있고, 데이터베이스 변경시 로직도 함께 수정해야 하며, 스키마 변경시 SQL 쿼리를 직접 수정해주어야 하는 단점이 있다.

 

 

📕 출처 : https://sm-studymemo.tistory.com/95 ,

 https://wikidocs.net/161164

 

 

 

반응형