2016년 10월 28일 금요일

[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][스프링JPA강좌]Querydsl오라클쿼리시퀀스(Sequence)사용예문

[스프링JPA강좌]Querydsl오라클쿼리시퀀스(Sequence)사용예문

SQLExpressions.nextval("시퀀스이름") 

아래와 같이 TYPE을 줄 수도 있다. 

SQLExpressions.nextval(Integer.class, "시퀀스이름")

[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][Querydsl오라클SQL팁]오라클ROWID,ROWNUM,LEVEL,SYSDATE같은의사칼럼사용하기

[Querydsl오라클SQL팁]오라클ROWID,ROWNUM,LEVEL,SYSDATE같은의사칼럼사용하기 

com.mysema.query.sql.oracle.OracleGrammar 클래스를 사용하면 되는데 
static 필드로 선언되어 있고 아래처럼 사용하면 된다. 

아래는 오라클의 계층형 쿼리를 Querydsl을 이용하여 구현 하였다. 

[계층형질의에서 LEVEL 예제] 

List<Tuple> rows =  query 
.select(StringExpressions.lpad( 
Expressions.stringTemplate("' '").stringValue(),     
            OracleGrammar.level.subtract(1).multiply(2), ' ')      
    .concat(emp.ename), 
    emp.sal, emp.deptno)  
.startWith(emp.ename.eq("KING"))  
.connectByPrior(emp.empno.eq(emp.mgr))    
.from(emp) 
.fetch(); 


select lpad(' ',(level - 1) * 2,' ') || EMP.ENAME, EMP.SAL, EMP.DEPTNO 
from EMP EMP 
start with EMP.ENAME = 'KING' 
connect by prior EMP.EMPNO = EMP.MGR 


-------------------------------------------------------------------- 
[ROWNUM 예제] 

List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname) 
.from(myemp1).innerJoin(mydept1) 
.on(myemp1.deptno.eq(mydept1.deptno)) 
.where(OracleGrammar.rownum.lt(6)).fetch(); 

select MYEMP1.ENAME, MYDEPT1.DNAME 
from MYEMP1 MYEMP1 
inner join MYDEPT1 MYDEPT1 
on MYEMP1.DEPTNO = MYDEPT1.DEPTNO 
where rownum < 6

[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][스프링JPA강좌,Querydsl,오라클DB에서 쿼리타입Q타입생성하기,SQLQueryFactory]

[스프링JPA강좌,Querydsl,오라클DB에서 쿼리타입Q타입생성하기,SQLQueryFactory] Spring Data JPA에서 오라클DB에 직접 쿼리하기 위해 오라클DB쪽 테이블을 자바쪽 프로젝트에 쿼리타입으로 생성해야 하는데, 그와 관련된 메이븐 설정 및 방법 입니다. 

첨부 파일 참조하세요~ 

감사합니다.

첨부파일URL참조 - http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=147

[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][스프링DATAJPA팁]Querydsl4.0.8오라클쿼리WITH구문오류!!(Querydsl,오라클쿼리강좌)

[스프링DATAJPA팁]Querydsl4.0.8오라클쿼리WITH구문오류!!(Querydsl,오라클쿼리강좌)

아래와 같은 SQL 쿼리를 만들기 위해 
(WITH문을 이용하여 MYEMP1, MYDEPT1 테이블에서 부서명, 부서별직원평균급여 구하기) 

with myemp2 as ( 
  select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal 
  from TEST.MYEMP1 MYEMP1 
  group by MYEMP1.DEPTNO) 
select MYDEPT1.DNAME, myemp2.SAL 
from MYDEPT1 
inner join myemp2 
on MYDEPT1.DEPTNO = myemp2.DEPTNO 

다음과 같이 Querydsl4.0.8 버전에서 작성했는데 

QMyemp1 myemp1 = new QMyemp1.myemp1; 
QMyemp1 myemp2 = new QMyemp1("myemp2"); 

List<Tuple> depts  = queryFactory.query() 
.with(myemp2, 
SQLExpressions 
.select(myemp1.deptno, myemp1.sal.avg().as("sal")) 
.from(myemp1) 
.groupBy(myemp1.deptno)) 
                .select(mydept1.dname, myemp2.sal) 
                .from(mydept1) 
                .innerJoin(myemp2).on(mydept1.deptno.eq(myemp2.deptno)) 
                .fetch(); 


Querydsl4.0.8 버전에서는 WITH구문이 다음과 같이 해석된다. 
(innerjoin에서 WITH구문에서 만든 myemp2와 조인을 해야되는데 
 myemp1 테이블과 조인하여 이상한 결과가 나오게 된다. ) 


with myemp2 as ( 
  select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal 
  from TEST.MYEMP1 MYEMP1 
  group by MYEMP1.DEPTNO) 
select MYDEPT1.DNAME, myemp2.SAL 
from MYDEPT1 
join MYEMP1 myemp2 
on MYDEPT1.DEPTNO = myemp2.DEPTNO 


Querydsl 버전을 4.0.9 이상으로 올리자. 
잘 동작된다.

[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][Spring Data JPA,Querydsl강좌]오라클SQL조인,ROWNUM,OracleGrammar.rownum

[Spring Data JPA,Querydsl강좌]오라클SQL조인,ROWNUM,OracleGrammar.rownum 

아래 두가지 방법 모드 가능하다. 

// List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname) 
// .from(myemp1).innerJoin(mydept1) 
// .on(myemp1.deptno.eq(mydept1.deptno)).limit(5).fetch(); 

List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname) 
.from(myemp1).innerJoin(mydept1) 
.on(myemp1.deptno.eq(mydept1.deptno)) 
.where(OracleGrammar.rownum.lt(6)).fetch(); 

------------------------------------------------- 

select MYEMP1.ENAME, MYDEPT1.DNAME 
from MYEMP1 MYEMP1 
inner join MYDEPT1 MYDEPT1 
on MYEMP1.DEPTNO = MYDEPT1.DEPTNO 
where rownum < 6

2016년 10월 27일 목요일

[자바학원,스프링학원추천]JPA 상속관계 매핑(@MappedSuperclass, @Inheritance,@DiscriminatorValue,@DiscriminatorColumn

JPA에서 상속관계 매핑 방법에 대해 설명한 자료입니다. RDB는 객체지향처럼 상속이 존재하지 않으며 대신 Super Type, Sub Type 이라는 개념이 존재한다. 슈퍼/서브 타입 논리모델을 물리적인 테이블로 변환할 때는 하나의 통합된 테이블로 표시(단일 테이블 전략)하거나, 각각 테이블로 별도로 두어 조회할 때 조인을 이용하거나 서브타입만 테이블로 변환을 하는 방법이 있다.

[오라클학원,SQL기초학원추천_탑크리에듀]스칼라서브쿼리(Scalar Subquery)

오라클 SQL초보자를 위한 스칼라 서브쿼리에 대한 간단한 설명자료 입니다. 데이터 건수가 많지 않다면 조인보다 가끔 스칼라 서브쿼리가 더 효율적일 때가 있죠. 참조하세요.