ORM 설명

안녕 모두!

이번에는 ORM의 개체-관계형 매핑에 대한 모든 것을 알려드리기 위해 또 다른 블로그 게시물로 돌아왔습니다.

개체 - 관계형 매퍼는 개발자의 꿈입니다. 모든 앱은 정보를 유지하고 완전하고 동적인 CRUD 기능을 허용하기 위해 데이터베이스가 필요합니다. 데이터베이스와 대화하려면 데이터베이스 언어(보통 SQL)를 배워야 합니다. SQL 요청은 다음과 같습니다.
$SELECT * FROM table_name;
조건을 포함하는 보다 복잡한 SQL 요청은 다음과 같습니다.
$SELECT * FROM table_name WHERE id = 1
그러나 ORM은 데이터베이스와 선호하는 프로그래밍 언어 사이를 이동하는 중간 계층이 됨으로써 이를 변경합니다.

ORM은 어떻게 작동합니까?



객체 관계형 매퍼는 객체 지향 프로그래밍 클래스와 데이터베이스 테이블 간의 링크를 설정하여 작동합니다. 테이블의 각 행은 연결된 클래스의 인스턴스로 표시됩니다.

ORM이 실제로 하는 일은 SQL 요청을 자동화하고 반복을 피하기 위해 코드에서 데이터베이스와 대화할 SQL 문을 "래핑"하는 것입니다. 이것은 프로그래머의 #1 규칙에 따라 의미가 있습니다. 건조하게 유지하십시오! (반복하지 마세요!) 작업을 수행하는 메서드를 만들고 해당 메서드를 여러 번 호출하는 것과 비슷합니다. 성가시고 반복적인 코드를 줄이고 더 친숙한 언어를 사용할 수 있습니다.

예를 들어 할 일 앱( check out mine! )을 빌드하는 경우 작업 테이블이 필요합니다. 테이블에 새 작업을 추가할 때마다 다음과 같은 SQL 문을 작성해야 합니다.
$ INSERT INTO tasks (name, category, minutes) VALUES ('Sweeping', 'Housework', 20)
대신 ORM은 해당 논리를 추상화하므로 더 쉽게 말할 수 있습니다.
$ Task.create(name:'Sweeping, category:'Housework', minutes:20)
이것은 훨씬 더 친숙하고, 훨씬 깨끗하고, 훨씬 빠릅니다!

ORM 규칙



많은 기능이 따르는 규칙에 따라 달라지므로 ORM 규칙을 따르는 것이 매우 중요합니다. 규칙을 따르지 않으면 ORM이 작동하지 않습니다!
  • 테이블은 소문자와 복수형입니다. 예: 작업, 요일, 범주
  • 클래스는 대문자이며 단수입니다. 예: 작업, 일, 카테고리

  • 모든 테이블이 클래스에 연결되고 모든 인스턴스가 테이블의 행과 연결된다는 점을 기억하는 것이 중요합니다. 그러나 행은 객체가 아니며 객체는 행이 아닙니다. 개체는 데이터베이스 내에 실제로 존재하는 것을 나타내는 것일 뿐입니다.

    일반적인 ORM 기능



    Active Record와 같은 대부분의 ORM에는 놀라운 기능이 있습니다. 아주 적은 양의 코드로 매우 유용한 메서드에 액세스할 수 있습니다. 다음은 만들기, 읽기, 업데이트 및 삭제 방법입니다.

    1. 만들기


    $ Day.create(name: 'Sunday')
    또는 저장하지 않고 새 날을 인스턴스화하거나 별도의 명령으로 저장할 수 있습니다.

    sunday = Day.new
    sunday.name = 'Sunday'
    sunday.save
    


    2. 읽기



    필요한 정보에 따라 여러 가지 방법으로 데이터를 읽을 수 있습니다. 특정 테이블의 모든 행을 원하는 경우 다음과 같이 말할 수 있습니다.
    $ Day.all
    컬렉션의 첫날만 말할 수 있습니다.
    $ Day.first
    이름, ID 또는 기타 속성으로 검색할 수 있습니다.
    $ Day.find_by(name: 'Sunday)

    3. 업데이트



    속성을 업데이트하려면 일반적으로 먼저 속성을 검색한 다음 업데이트하여 속성을 찾아야 합니다.

    monday = Day.find_by(name: 'Monday')
    monday.update(name: 'Meatless Monday')
    

    `

    4. 삭제



    마찬가지로 삭제하려면 먼저 개체를 찾은 다음 삭제해야 합니다.

    `

    monday = Day.find_by(name: 'Monday')
    monday.destroy
    

    `

    자세한 내용은



    https://guides.rubyonrails.org/active_record_basics.html

    좋은 웹페이지 즐겨찾기