SQL-конструкции переведены в ООП - PullRequest
1 голос
/ 20 марта 2010

Как человек, пришедший из мира объектной ориентации, мне довольно сложно обернуться вокруг SQL. Однако недавно я понял, что классическая конструкция SQL

select X from Y where Z

в основном эквивалентно следующей конструкции ООП:

List<SomeType> results = db.query(new Matcher<SomeType> () {
  public boolean match(SomeType candidate) {
    return ...; // checks condition Z on candidate, returns true for match
  }
};

Итак, мой вопрос: каковы эквиваленты ООП для других конструкций SQL, таких как объединения?

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

Я думаю, что Microsoft LINQ (независимый от языка запрос) предпринял попытку создать язык, который можно использовать в качестве объектно-ориентированной версии SQL. HQL Hibernate был бы другим. Я бы порекомендовал изучить оба из них, если SQL вызывает у вас проблемы. Может быть, они могут прояснить это для вас.

1 голос
/ 20 марта 2010

Каковы эквиваленты ООП для других конструкций SQL, таких как объединения?

Представьте, что у нас есть запрос, подобный следующему:

SELECT * FROM tableA JOIN tableB ON tableA.b_id = tableB.id WHERE tableA.someFld < 50;

Так что вам нужно выбрать каждую запись из tableA, которая соответствует условию из условия WHERE (tableA.someFld < 50) Затем для каждой записи из набора результатов отметьте целое tableB, чтобы найти записи, которые соответствуют условию ON.

// Pseudo-code
Query query = new Query();
query.where(new Matcher....);
query.join(new Matcher<SomeType>() {
  public boolean match(SomeType tableACandidate, SomeType tableBCandidate) {
    return tableACandidate.getBId() == tableBcaididate.getId();
  }
});

ResultSet result = query.execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...