2012-11-09 2 views
2

Java 프로젝트에서 일반 SQL 문자열 대신 쿼리 작성을 위해 jooq를 사용하기 시작했습니다. 라이브러리는 훌륭하지만 질문이 있습니다. (jooq-newbie이기 때문에) : jooq를 사용하여 데이터베이스를 만들 수 있습니까?하지만 프로젝트가 없으면 jooq 매핑/생성기가 필요합니까?jooq가있는 데이터베이스 생성 문

+0

코드를 생성하려고합니까, 아니면 데이터베이스를 만들겠습니까? (jOOQ에는 DDL에 대한 공식적인 지원이 없지만 일반 SQL 명령을 사용하여 DDL을 실행할 수 있습니다). jooq-meta와 jooq-codegen을 포함하지 않는다는 것을 의미합니까? –

+0

저장 프로 시저를 호출하여 데이터베이스를 만들려고합니다. – KernelPanic

+0

좀 더 구체적으로 작성하십시오. 이 질문에 대답하는 것은 매우 어렵습니다. 자세한 내용은 [Stack Overflow FAQ] (http://stackoverflow.com/faq#howtoask)를 참조하십시오. –

답변

2

코드 생성기에 의존하지 않고 jOOQ로 할 수있는 일이 많이 있습니다. 예를 들어

http://www.jooq.org/doc/2.6/manual/getting-started/use-cases/jooq-as-a-standalone-sql-builder/

: 수동에서 시작 가이드는 몇 가지 예를 언급

String sql = create.select(
         fieldByName("BOOK","TITLE"), 
         fieldByName("AUTHOR","FIRST_NAME"), 
         fieldByName("AUTHOR","LAST_NAME")) 
        .from(tableByName("BOOK")) 
        .join(tableByName("AUTHOR")) 
        .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID")) 
        .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948)) 
        .getSQL(); 

그것은 또한 "일반 SQL"에 대한 jOOQ를 사용하는 방법에 대한 매뉴얼의 섹션에 대한 참조 :

http://www.jooq.org/doc/2.6/manual/sql-building/plain-sql/

물론 코드 생성기를 사용하여 다음에 대한 메타 정보를 생성 할 수 있습니다. 귀하의 스키마. 이것은 생성기가 컴파일 타임에만 사용되기 때문에 생성기에 런타임 종속성을 추가해야한다는 것을 의미하지 않습니다.

+0

이것은 바보처럼 들릴지 모르지만, 'fieldByName'의 메소드 정의? 'jooq 3.0.1'을 사용하고 있는데,'fieldByName'은 실제로 하위 버전의'Factory' 클래스에서 찾을 수 있습니다. 그러나 낮은 버전 (2.6.4)으로 전환하면'DSL' 클래스를 사용할 수 없습니다. – Bnrdo

+1

@onepotato : 다음은 2.x -> 3.x 마이그레이션 가이드입니다. http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0. 이 메소드는 바로 ['DSL.fieldByName()'] (http://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#fieldByName (java.lang.String ..)에 있습니다. .))) –