Там какая-либо библиотека должна представить SQL-запросы как объекты в коде Java? [закрытый]

$other = array_map('chr',range(33,47));
15
задан Tomasz Błachowicz 5 May 2009 в 14:33
поделиться

5 ответов

Jequel looks pretty nifty: http://www.jequel.de/

It uses a fluent interface, so it's easy to read, almost like natural SQL (from the docs):

SqlString sql = select(ARTICLE.OID)
               .from(ARTICLE, ARTICLE_COLOR)
               .where(ARTICLE.OID.eq(ARTICLE_COLOR.ARTICLE_OID)
               .and(ARTICLE.ARTICLE_NO.is_not(NULL)));

It also supports executing queries against a DataSource with parameters, so it handles creation of parameterized queries as well.

7
ответ дан 1 December 2019 в 01:11
поделиться

http://www.hibernate.org/ Вероятно, самая мощная библиотека ORM для Java. Это может сделать гораздо больше, чем просто сопоставление запросов. Таким образом, вы можете легко реализовать это где-то еще в вашем приложении. Для вашего случая это можно сделать так:

public class LookupCodeName
{
    private String code;
    private String name;

 /*... getter-setters ... */
}

public class someBL {

public List<LookupCodeName> returnSomeEntity() {
      SQLQuery sqlQuery =  (SQLQuery)((HibernateSession)em).getHibernateSession()
                        .createSQLQuery( "SELECT st.name as name, st.code as code FROM someTable st")
                        .addScalar("code")
                        .addScalar("name")
.setResultTransformer(Transformers.aliasToBean(LookupCodeName.class));
    }
return (List<LookupCodeName>)sqlQuery.list();
}
7
ответ дан 1 December 2019 в 01:11
поделиться

Apache Empire-db - это уровень абстракции реляционной базы данных и компонент персистентности данных, который позволяет разработчикам применять гораздо более ориентированный на SQL подход в разработке приложений, чем традиционные объектно-реляционные структуры отображения ( ORM).

Подробнее здесь: https://empire-db.apache.org/

Quaere

http://xircles.codehaus.org/projects/quaere

2
ответ дан 1 December 2019 в 01:11
поделиться

Если вы не хотите отображать строковые запросы, вы должны аннотировать свой класс как объект и связать его с таблицей, тогда вы можете использовать спящий режим или постоянство Java. Однако пример будет слишком сложным. Но в конце ваш запрос будет выглядеть примерно так:

найти список объектов:

 Criteria c = createCreteria(entityManager, StockMarket.class);
    // you can add "where" clause by using c.add(Restrictions); 
   // like this: c.add(Restrictions.ilike("name", "%somename%"); where "name" is your entity's field
     List<StockMarket> smList = c.list();

найти объект по идентификатору:

 StockMarket sm  = entityManager.find(StockMarket.class, id);
1
ответ дан 1 December 2019 в 01:11
поделиться

Querydsl Поддерживает запрос на SQL, JPA и JDO Backends.

Приведенный выше пример становится:

query.from(stockmarket).where(stockmarket.corp.eq(someVar))
    .orderBy(stockmarket.date.desc())
    .list(stockmarket.date, stockmarket.quote);

Querydsl использует генерацию кода через APT для зеркала схемы SQL для типов запросов Java. Таким образом, запросы полностью безопасны (или », или« совместимый схема »с SQL).

Я сопровождающий Querydsl, поэтому этот ответ предвзятый.

Я опубликовал сравнение Querydsl в другие рамки здесь .

13
ответ дан 1 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: