누구나 Squiggle 과 같은 Java 용 좋은 SQL 빌더 라이브러리를 알고 있습니다 (더 이상 유지되지 않는 것 같습니다). 가급적이면 적극적으로 개발중인 프로젝트입니다.
가급적 Zend_Db_Select 와 같은 구문 을 사용하면 다음과 같은 쿼리를 만들 수 있습니다.
String query = db.select().from('products').order('product_id');
누구나 Squiggle 과 같은 Java 용 좋은 SQL 빌더 라이브러리를 알고 있습니다 (더 이상 유지되지 않는 것 같습니다). 가급적이면 적극적으로 개발중인 프로젝트입니다.
가급적 Zend_Db_Select 와 같은 구문 을 사용하면 다음과 같은 쿼리를 만들 수 있습니다.
String query = db.select().from('products').order('product_id');
답변:
ddlutils 가 최선의 선택입니다 : http://db.apache.org/ddlutils/api/org/apache/ddlutils/platform/SqlBuilder.html
다음은 예제 (groovy)를 만듭니다.
Platform platform = PlatformFactory.createNewPlatformInstance("oracle");//db2,...
//create schema
def db = new Database();
def t = new Table(name:"t1",description:"XXX");
def col1 = new Column(primaryKey:true,name:"id",type:"bigint",required:true);
t.addColumn(col1);
t.addColumn(new Column(name:"c2",type:"DECIMAL",size:"8,2"));
t.addColumn( new Column(name:"c3",type:"varchar"));
t.addColumn(new Column(name:"c4",type:"TIMESTAMP",description:"date"));
db.addTable(t);
println platform.getCreateModelSql(db, false, false)
//you can read Table Object from platform.readModelFromDatabase(....)
def sqlbuilder = platform.getSqlBuilder();
println "insert:"+sqlbuilder.getInsertSql(t,["id":1,c2:3],false);
println "update:"+sqlbuilder.getUpdateSql(t,["id":1,c2:3],false);
println "delete:"+sqlbuilder.getDeleteSql(t,["id":1,c2:3],false);
//http://db.apache.org/ddlutils/database-support.html
jOOQ 를 추천 할 수 있습니다 . 그것은 많은 훌륭한 기능과 SQL을위한 직관적 인 DSL 및 매우 사용자 정의 가능한 리버스 엔지니어링 접근 방식을 제공합니다.
jOOQ는 유창하고 직관적 인 DSL에서 복잡한 SQL, 유형 안전성, 소스 코드 생성, 활성 레코드, 저장 프로 시저, 고급 데이터 유형 및 Java를 효과적으로 결합합니다.
Hibernate Criteria API (일반 SQL은 아니지만 매우 강력하고 활발한 개발 중) :
List sales = session.createCriteria(Sale.class)
.add(Expression.ge("date",startDate);
.add(Expression.le("date",endDate);
.addOrder( Order.asc("date") )
.setFirstResult(0)
.setMaxResults(10)
.list();
IN
/ EXISTS
절 에 중첩 된 선택의 예가 Sale
있습니까? 아니면 엔티티에 대한 별칭을 사용하는 자체 조인 의 예가 있습니까? 궁금 해요
다음 라이브러리를 사용할 수 있습니다.
https://github.com/pnowy/NativeCriteria
라이브러리는 Hibernate "create sql query"위에 구축되어 Hibernate에서 지원하는 모든 데이터베이스를 지원합니다 (Hibernate 세션 및 JPA 공급자가 지원됨). 빌더 패턴 등을 사용할 수 있습니다 (개체 매퍼, 결과 매퍼).
github 페이지에서 예제를 찾을 수 있으며 라이브러리는 물론 Maven 중앙에서 사용할 수 있습니다.
NativeCriteria c = new NativeCriteria(new HibernateQueryProvider(hibernateSession), "table_name", "alias");
c.addJoin(NativeExps.innerJoin("table_name_to_join", "alias2", "alias.left_column", "alias2.right_column"));
c.setProjection(NativeExps.projection().addProjection(Lists.newArrayList("alias.table_column","alias2.table_column")));