WIL 05

·2023년 4월 30일
0

ORM, SQL, MVC

영속성

영속성(Persistence)은 데이터를 생성한 프로그램이나 처리하는 시스템이 종료되더라도 사라지지 않고 계속해서 유지되는 특성을 의미합니다. 즉, 데이터를 저장하는 과정에서 생성된 객체나 데이터를 DB나 파일 시스템 등에 저장해 놓고 나중에 필요할 때 다시 불러와 사용할 수 있도록 하는 것을 말합니다.

영속성 컨텍스트

 엔티티를 영구 저장 하는 환경 이라는 뜻 입니다. 어플리케이션에서 데이터베이스에서 꺼내온 데이터 객체를 보관하고 관리하는 역할을 합니다. 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할 수 있습니다.

SQL Mapper

개발자가 직접 SQL문을 작성해 데이터베이스 데이터를 다루는 Persistence Framework입니다. 객체와 테이블 간의 관계를 직접 매핑하는 것이 아닌, SQL문을 실행해 쿼리 수행 결과를 어떤 객체에 매핑할지 바인딩 하는 방법입니다. 따라서 DBMS에 종속적인 방법이라고 할 수 있습니다.

SQL Mapper 장점

  1. JDBC를 사용할 때 발생하는 불편함을 줄일 수 있다.
  2. SQL이 비즈니스 로직과 분리되어 유지보수가 용이하다.
  3. 세부적인 SQL 변경시 편리하다
  4. 기존에 SQL문법을 그대로 적용할 수 있어 새로운 기술을 학습하지 않아도 된다.

SQL Mapper 단점

  1. DBMS 별로 SQL 문법이 다르다.
    2, 개발자가 직접 SQL문을 작성해야 한다.
  2. DBMS 변경시 SQL문을 재사용하기 어렵다.
  3. 객체와 테이블간 패러다임 불일치가 발생한다.

ORM

ORM(객체 관계 매핑, Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스를 연결해주는 기술입니다.

ORM은 데이터베이스에 직접 SQL 쿼리를 작성하지 않아도, 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 해줍니다.

ORM은 객체와 테이블 간의 매핑 규칙을 설정하고, 이에 따라 객체의 필드와 테이블의 칼럼을 매핑하여 객체를 데이터베이스에 저장하고, 데이터베이스에서 객체를 불러올 수 있도록 합니다.

=> 개발자는 데이터베이스와의 상호작용을 객체지향적으로 처리할 수 있고, 복잡한 SQL 문장을 직접 작성하지 않아도 됩니다.

ORM 사용 이유

  1. 완벽한 객체지향적인 코드 : 직관적인 이해가 쉬움
  2. 재사용, 유지보수, 리팩토링 용이성 : ORM을 통해 작성한 객체를 재활용할 수 있다는 측면에서 재사용 및 유지보수의 편리성이 증가함
  3. DBMS 종속성 하락

ORM 단점

  1. ORM이 모든 것을 해결해줄 수 없기 때문에 적절하게 SQL문을 사용할 수 있어야 한다.
  2. 복잡한 쿼리문의 경우 오히려 SQL문으로 사용이 직관적이면서 효울적일 수 있다.

SQL

SQL은 Structured Query Language의 약어.

SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있습니다.

데이터는 정해진 데이터 스키마에 따라 테이블에 저장됩니다.
데이터는 관계를 통해 여러 테이블에 분산됩니다.

SQL 장점

  1. 명확하게 정의된 스키마, 데이터 무결성 보장할 수 있습니다.
  2. 관계는 각 데이터를 중복없이 한번만 저장합니다.

SQL 단점

  1. 덜 유연해서 데이터 스키마를 사전에 계획하고 알려야 합니다. (나중에 수정하기 힘듦)

스키마 : 데이터베이스에 저장되는 자료 구조와 제약 조건을 정의한 것

  1. 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있습니다.
  2. 대체로 수직적 확장만 가능합니다.

MVC

MVC는 Model-View-Controller의 약자로, 소프트웨어 개발 패턴 중 하나입니다. 이 패턴은 어플리케이션의 로직과 사용자 인터페이스를 분리하여 개발을 용이하게 하며, 소프트웨어 개발 시 유지보수와 확장성을 높일 수 있는 구조를 제공합니다.

Model

Model은 어플리케이션의 데이터와 비즈니스 로직을 담당하며, 데이터의 상태 변경과 관련된 작업을 처리합니다.

View

View는 어플리케이션의 사용자 인터페이스를 담당하며, Model의 데이터를 보여주는 역할을 합니다.

Controller

Controller는 사용자의 입력을 받아 Model과 View 간의 상호작용을 관리합니다. Controller는 Model의 데이터를 변경하거나, View에 표시할 데이터를 선택하고, View의 표시 방법을 변경하는 작업을 수행합니다.

=> 이렇게 각각의 역할을 분리함으로써, 하나의 역할이 다른 역할의 변경에 영향을 받지 않고 독립적으로 작업할 수 있습니다. 이로 인해 개발자는 어플리케이션의 로직과 사용자 인터페이스를 동시에 수정하지 않아도 되며, 소프트웨어의 유지보수와 확장성을 높일 수 있습니다.


0개의 댓글