원시 SQL 쿼리에 대한 Laravel의 Eloquent ORM을 사용하는 장점은 많으며 개발자 생산성, 코드 가독성, 유지 관리 및 데이터베이스 추상화를 중심으로합니다. 자세한 이점은 다음과 같습니다.
** 1. 가독성과 표현성 향상
Eloquent를 사용하면 개발자가 RAW SQL 대신 PHP 구문 및 객체 지향 모델을 사용하여 데이터베이스 쿼리를 작성할 수 있습니다. 이로 인해 자연어 및 비즈니스 논리와 유사한 더 읽기 쉽고 표현적인 코드가 발생하여 코드에 포함 된 복잡한 원시 SQL 문자열에 비해 이해하고 유지하기가 더 쉽습니다 [5] [6].
** 2. 단순화 된 관계 관리
Eloquent는 데이터베이스 테이블 (예 : Hasmany, Solgsto, Hasone, 다형성 관계) 간의 관계를 정의하고 관리하기위한 내장 지원을 제공합니다. 이를 통해 개발자는 관련 데이터를 직관적으로 작업하고 최소한의 코드로 관련 레코드를 검색 할 수 있습니다.
** 3. 컨텍스트 전환 감소
웅변을 사용한다는 것은 개발자가 SQL과 PHP를 앞뒤로 전환하지 않고 PHP 코드 내에 머무는 것을 의미합니다. 이것은 특히 SQL 구문에 익숙하지 않은 사람들에게인지 부하를 줄이고 발달 속도를 높입니다 [2].
** 4. 향상된 유지 관리 및 건식 코드
Eloquent는 테이블을 나타내고 데이터베이스 로직을 캡슐화하는 모델의 정의를 허용함으로써 건조 (직접 반복하지 않음) 접근 방식을 장려합니다. 이러한 데이터베이스 상호 작용 논리의 중앙 집중화는 코드베이스를 더 쉽게 유지 관리하고 리팩터링 할 수있게 해줍니다 [4].
** 5. 데이터베이스 이식성
Eloquent는 데이터베이스 계층을 추상화하기 때문에 기본 데이터베이스 시스템 (예 : MySQL에서 PostgreSQL로)을 전환하려면 최소한의 코드 변경이 필요합니다. 원시 SQL 쿼리에는 종종 마이그레이션을 어렵게 만드는 데이터베이스 별 구문이 종종 포함되어 있지만 웅변은 이러한 차이를 내부적으로 처리합니다 [4].
** 6. 보안 혜택
Eloquent는 매개 변수 바인딩을 내부적으로 사용하여 SQL 주입 공격을 자동으로 보호하여 신중하게 처리되지 않으면 원시 SQL에서 발생할 수있는 보안 취약점의 위험을 줄입니다 [6].
** 7. 일반적인 운영을위한 빠른 개발
일반적인 CRUD 작업 및 공통 쿼리의 경우 Eloquent는 깊은 SQL 지식없이 개발 속도를 높이는 편리한 방법을 제공합니다. 이는 데이터베이스가 새로운 개발자 또는 쿼리 최적화보다는 응용 프로그램 논리에 집중하려는 개발자에게 특히 도움이됩니다 [3] [5].
** 8. Laravel 생태계와의 통합
Eloquent는 마이그레이션, 시드, 검증 및 이벤트 후크와 같은 다른 라벨 기능과 원활하게 통합되어 RAW SQL이 상자에서 제공 할 수없는 응집력있는 개발 경험을 제공합니다 [4].
** 9. 복잡한 쿼리를위한 고급 기능
RAW SQL은 때때로 매우 복잡한 쿼리에 필요한 경우가 많지만 웅변은 제약, 하위 쿼리 및 복잡한 관계 (예 : Hasmanythrough)와 같은 고급 기술을 지원하여 개발자가 우아하고 유지 관리 가능한 방식으로 정교한 쿼리를 작성할 수 있도록합니다 [7].
** 10. MVC 아키텍처의 코드 가독성 및 유지 관리
웅변은 자연스럽게 Laravel의 MVC 패턴에 맞아 깨끗한 우려 분리를 촉진합니다. 모델은 데이터베이스 로직을 캡슐화하고 컨트롤러가 응용 프로그램 로직을 처리하며 프레젠테이션에 중점을 둡니다. 이 분리는 컨트롤러 또는 뷰에 원시 SQL을 직접 포함시키는 것과 비교하여 코드 선명도와 유지 가능성을 향상시킵니다 [3] [6].
요약하면, Eloquent ORM은 개발자 친화적이고 표현력이 있으며 Laravel의 데이터베이스와 상호 작용하여 코드 가독성, 유지 관리 및 이식성을 향상시키면서 일반적인 작업을위한 개발을 가속화하는 방법을 제공합니다. 원시 SQL은 여전히 성능 또는 매우 복잡한 쿼리에 사용될 수 있지만, 웅변은 우아함과 효율성으로 대다수의 일반적인 응용 프로그램 요구를 다룹니다.
인용 :
[1] https://laracasts.com/discuss/channels/eloquent/concrete-advantages-ofthe-eloquent-orm
[2] https://www.reddit.com/r/laravel/comments/us98hc/hi_im_wondring_when_to_so_eloquent_and_when_to/
[3] https://stackoverflow.com/questions/49105249/laravel-eloquent-orm-vs-quer-builder whith-one-better
[4] https://www.obiikriationz.com/50-laravel-eloquent-orm-funtions
[5] https://www.interserver.net/tips/kb/laravel-eloquent-orm/
[6] https://www.linkedin.com/pulse/laravel-eloquent-vs-query-builder-raw-sql-ultimate-guide-adil-nisar-5jshf
[7] https://www.linkedin.com/pulse/advanced-eloquent-techniques-mastering-laravels-orm-complex-imzzf
[8] https://www.reddit.com/r/php/comments/2xrs33/been_working_with_raw_mysql_for_years_why_should/