DB연동

jaeyong Lee·2023년 11월 10일
0

웹 애플리케이션에서 데이터베이스 연동방식

1. 스프링 프레임워크전 JSP방식 웹 애플리케이션 구동할 때

JDBC

JDBC는 Java Database Connectivity의 약자로써 자바에서 데이터베이스에 접속 할 수 있도록 하는 자바 API입니다.

Connection pool: 미리 데이터 베이스와 연결시킨 상태를 유지하는 기술입니다.
(톰캣 7이상 부터는 자체 내장하고 있어 따로 다운 안받아도 됩니다.)
웹 애플리케이션이 서비스되기 전에 웹서버에 미리 생성하여 준비한 다음 필요할때마다
connection을 가져다 씀으로써 일일이 코드로구현하던 JDBC프로그램 문제점을 개선했습니다.

JNDI

JNDI는 Java Naming and Directory Interface의 약자로써 설정 정보를 중앙에서 효과적으로 관리하고, 애플리케이션이 런타임에 그 정보를 동적으로 가져와서 사용할 수 있게 도와주는 자바 API입니다. (데이터베이스 연결정보 외에 외부 리소스에서도 가져올 수 있다.)
즉 데이터와 설정정보를 가져와 연동이 가능하지만 외부 리소스 설정정보를 가져오는데에도 활용이 됩니다.

실제 웹 애플리케이션에서 ConnectionPool 객체를 구현할 때는 Java 에서 제공하는 javax.sql.DataSource 클래스를 이용합니다. 그리고 웹 애플리케이션 실행시 톰캣이 만들어 놓은 ConnectionPool객체에 접근할 때는 JNDI를 이용합니다.

요약하자면
1.JDBC는 데이터베이스와의 연결과 관련된 작업을 수행하는데 사용되지만 일일이 데이터베이스와의 연결 코딩을 적어줘야 함으로 하드코딩해야합니다.
2.이러한 문제점을 connection pool을 이용하여 보완할 수 있습니다.
3. JNDI도 설정정보를 미리 정의하고, 이름으로 관리함으로써 커넥션 풀과 비슷한면이있습니다.
4. 하지만 JNDI는 외부 리소스에 대한 설정정보를 애플리케이션에서 동적(실시간)으로 접근할 수 있게 도와준다는 점에서 JDBC와 JNDI와 같이 쓰이기도 합니다.
(동적으로 외부 리소스의 환경정보에 접근할 수 있으면 애플리케이션을 더 유연하게 운영가능하고 빠른 대응을 할 수 있습니다.

2. Spring

Spring 와 JDBC는 연동할 수 있습니다.

하지만 아래 더 쉬운방법이 있기 때문에 있다라는 것만 알고 넘어가면 좋을 것 같습니다.

웹애플리케이션 DB 최종연결

1. Mybatis

(SQL Mapping Framework for Java)

전통적인 ORM은 주로 객체와 데이터베이스 간의 매핑에 중점을 두고 자동화를 제공하는 반면, MyBatis는 SQL을 직접 다루면서 매핑을 지원하는 특징을 가지고 있습니다.

MyBatis는 SQL 매핑을 중심으로 동작하는데, 개발자는 SQL을 직접 작성하고 매핑 정보를 XML 파일이나 어노테이션을 통해 정의합니다.

MyBatis는 SQL을 직접 제어하면서도, 객체와 데이터베이스 간의 매핑을 지원합니다. 따라서 MyBatis는 보다 세밀한 SQL 제어를 원하는 경우에 사용할 수 있는 좋은 도구입니다.
spring과 mybatis는 각각 독립된 프레임워크 입니다.

  1. SQL 직접제어 : SQL쿼리를 직접 작성하고 제어할 수 있는 유연성을 제공합니다. 개발자가 SQL을 세밀하게 조절하고 최적화 할 수 있습니다.
  2. 간단한 매핑: myBatis는 SQL결과와 객체간의 간단한 매핑을 제공하며, XML또는 어노테이션을 사용하여 데이터베이스 스키마와 객체 모델간의 매핑을 정의할 수 있습니다.

2. ORM ( ORM 표준이 JPA)

ORM은 Object Relational Mapping으로써 한글로 말하자면 객체 관계 매핑입니다.
Mybatis는 SQL문을 매핑한다면 ORM은 객체를 매핑합니다.
이러한 ORM은 개념이고 JPA가 API로써 ORM 구현한 표준입니다.
JPA (Java Persistence API)는 Persistence:영속성이라는 뜻 답게 데이터를 메모리(휘발성)가 아니라 디스크(비휘발성) 또는 다른 영속성 저장소에 저장할 수 있도록 설계되어 있습니다.

2.1 Hibernate

Hibernate는 ORM프레임워크중 하나입니다. mybatis와 함께 전세계에서 가장많이 쓰이는 프레임워크입니다.
즉 JPA는 ORM의 표준 API이고 그 API를 구현한 Framework가 Hibernate입니다.

0개의 댓글