2023-05-12[TIL]

jenna·2023년 5월 12일
0

TIL/WIL

목록 보기
22/60

ORM과 QUERY

ORM(Object-Relational Mapping)

: 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 프로그래밍 기술

  • 객체 지향 프로그래밍 언어에서 사용하는 클래스, 객체, 매서드 등과 같은 구성 요소를 사용하여 데이터베이스와 상호 작용할 수 있음
  • 객체를 데이터베이스에 삽입, 조회, 수정, 삭제할 때 객체지향적인 방법으로 코드를 작성
  • 라이브러리를 사용하여 데이터베이스 테이블과 객체 사이의 관계를 정의
  • SQL쿼리를 자동으로 생성하고 실행하여 데이터베이스를 조작
  • 데이터베이스를 직접 조작하는 대신 객체를 조작할 수 있으므로 코드를 더욱 추상화하여 작성할 수 있음

장점

데이터베이스 구조의 변경에도 대응할 수 있으며, 코드 재사용성과 유지 보수성이 높아짐'

단점

유연성이 떨어지고 자동으로 매핑을 처리하기 때문에 성능이 떨어짐(ORM을 사용하면 SQL 쿼리를 직접 작성하지 않으므로, 때때로 비효율적인 쿼리가 생성, 복잡한 쿼리나 최적화가 필요한 경우에는 직접 SQL을 작성하는 것이 더 효율적일 수 있다)


QUERY

: 데이터베이스에서 직접 SQL 쿼리를 작성하여 데이터를 가져오는 방법

  • QUERY를 사용하면 개발자가 데이터베이스에 대한 직접적인 제어를 갖게됨
  • SQL Injection예방을 위해 고려해야되는 것들
    1.입력값 유효성 검증 및 처리
    2.Prepared Statement 또는 Stored Procedure를 사용
    3.SQL Injection에 대한 필터링(특수문자 처리 등)

장점

데이터베이스에 대한 접근을 정확하게 제어할 수 있고, 성능이 좋음

단점

코드 가독성과 유지보수성, 많은 양의 코드로 생산성이 떨어짐


orm를 사용하는 것과 3가지방법을 사용해 sql injection을 예방하는 query문과 보안성은 크게 차이 나지 않지만 ORM은 SQL Injection을 예방하는 방법 중 하나일 뿐만 아니라 객체 지향 프로그래밍 패러다임에 맞게 개발이 가능하고 sql 쿼리 작성과 관리, 데이터베이스 스키마 변경등의 작업을 간편하게 수행이 가능해서 생산성이 높음

profile
https://github.com/jennaaaaaaaaa

0개의 댓글