레이블이 spring강좌인 게시물을 표시합니다. 모든 게시물 표시
레이블이 spring강좌인 게시물을 표시합니다. 모든 게시물 표시

2013년 10월 28일 월요일

default 키워드 사용 예제 oracle 9i에서는 SQL문에 default 키워드를 사용 할 수 ...

default 키워드 사용 예제

oracle 9i에서는 SQL문에 default 키워드를 사용 할 수 있게 되었는데 아래의 예를 통해 이해해 보도록 합니다.

SQL>  create table addr (
  2  name varchar2(15) not null primary key,
  3  age number(3) default 0
  4  );

Table created.

SQL> insert into addr (name, age) values ('jclee1',1);

1 row created.

SQL> insert into addr (name, age) values ('jclee2',2);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from addr;

NAME                  AGE
--------------- ----------
jclee1                  1
jclee2                  2

SQL> update addr set age=default
  2  where name = 'jclee1';

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from addr;

NAME                  AGE
--------------- ----------
jclee1                  0
jclee2                  2 

2013년 10월 23일 수요일

[ORACLE 외부파일 BFILE 강좌]BFILE을 이용하여 이미지를 DB에 저장/저장된 BFILE을 이용하여 새로운 이미지 생성

 [ORACLE 외부파일 BFILE 강좌]BFILE을 이용하여 이미지를 DB에 저장/저장된 BFILE을 이용하여 새로운 이미지 생성



BFILE을 이용하여 이미지를 DB에 저장/저장된 BFILE을 이용하여 새로운 이미지 생성

아래의 두 PL/SQL 프로시저는 OS의 binary file을 DB의 BFILE 컬럼과 연계하여 작업을 하는 예제 입니다.

Load_BFILE_FROM_Image 프로시저

이 프로시저는 디스크 상의 이미지 파일을 BFILE 컬럼에 저장하는 역할을 합니다. 이 프로시저는 SQL문장안에서 BFILENAME 함수를 사용 하여 BFILE 컬럼을 UPDATE 합니다. 여기서 주의 할 점은 이미지가 디스크 상에 존재 할 뿐 DB에는 저장 되지 않는 다는 것을 명심해야 합니다. 즉 BFILE 컬럼은 OS상의 파일에 대한 포인터를 저장 한다고 보면 됩니다.


Write_BFILE_To_File 프로시저

이 프러시저는 그래픽 파일 등을 내용을 기 저장된 BFILE 참조를 이용하여 어떻게 다시 디스크에 쓰는지에 대해 예를 들고 있습니다. 이때 UTL_FILE.PUT_RAW 프로시저를 이용하여 BFILE 컬럼의 포인터를 읽어 하나씩 디스크에 기록 하게 됩니다.

또한 DBMS_LOB.READ 함수를 이용하여 BFILE 참조로부터 낱낱이 읽어 들여 이를PL/SQL RAW 변수에 넣습니다.

아래의 예를 참고 합니다.

1.        테스트를 위한 테이블, 디렉토리를 만듭니다.

SQL> CREATE TABLE test_bfile (
  2        id          NUMBER(15)
  3      , file_name    VARCHAR2(1000)
  4      , image        BFILE
  5      , timestamp    DATE
  6  )
  7  /

테이블이 생성되었습니다.

SQL> CREATE OR REPLACE DIRECTORY
  2      EXAMPLE_LOB_DIR
  3      AS
  4  'd:\LOBs'
  5  /

디렉토리가 생성되었습니다.


2.        Load_BFILE_From_Image 프러시저를 만듭니다.
(d:\LOBs 폴더에 oraclejava_logo.gif 파일을 복사해 둡니다. 파일 이름은 적절히 수정 하시면 됩니다)

CREATE OR REPLACE PROCEDURE Load_BFILE_From_Image
IS
BEGIN
    DBMS_OUTPUT.ENABLE(100000);
    INSERT INTO test_bfile (id, file_name, image, timestamp)
        VALUES (1001, 'oracle9i_logo.gif', null, sysdate);
    UPDATE test_bfile
        SET image = BFILENAME('EXAMPLE_LOB_DIR', 'oraclejava_logo.gif')
        WHERE id = 1001;
END;


3.        Write_BFILE_To_File 프러시저를 만듭니다.


  CREATE OR REPLACE PROCEDURE Write_BFILE_To_File
  IS
    source_pic      BFILE;
    buffer          RAW(32767);
    buffer_size    CONSTANT BINARY_INTEGER := 32767;
    amount          BINARY_INTEGER;
    offset          NUMBER(38);
    file_handle    UTL_FILE.FILE_TYPE;
    directory_name  CONSTANT VARCHAR2(80) := 'EXAMPLE_LOB_DIR';
    image_filename  CONSTANT VARCHAR2(80) := 'oraclejava_logo2.gif';
    dest_pic        BFILE;
  BEGIN
      DBMS_OUTPUT.ENABLE(100000);
      -- -----------------
      -- GET BFILE LOCATOR
      -- -----------------
      SELECT image INTO source_pic
          FROM test_bfile
          WHERE id = 1001;
      -- ---------------------------------------
      -- OPEN ORIGINAL BFILE IMAGE USING LOCATOR
      -- ---------------------------------------
      DBMS_LOB.FILEOPEN(
          file_loc  => source_pic,
          open_mode  => DBMS_LOB.FILE_READONLY);
      -- ---------------------------------
      -- OPEN NEW IMAGE FILE IN WRITE MODE
      -- ---------------------------------
      file_handle := UTL_FILE.FOPEN(
          location    => directory_name,
          filename    => image_filename,
          open_mode    => 'w',
          max_linesize => buffer_size);
      amount := buffer_size;
      offset := 1;
      -- ---------------------------------------------------
      -- READ FROM BFILE IMAGE / WRITE OUT NEW IMAGE TO DISK
      -- ---------------------------------------------------
      WHILE amount >= buffer_size
      LOOP
          DBMS_LOB.READ(
              file_loc  => source_pic,
              amount    => amount,
              offset    => offset,
              buffer    => buffer);
          offset := offset + amount;
          UTL_FILE.PUT_RAW(
              file      => file_handle,
              buffer    => buffer,
              autoflush => false);
      END LOOP;
      UTL_FILE.FCLOSE(file => file_handle);
      DBMS_LOB.FILEOPEN(file_loc => source_pic);
      -- --------------------------------------------
      -- INSERT THE NEW IMAGE FILE AS A SECOND RECORD
      -- --------------------------------------------
      INSERT INTO test_bfile (id, file_name, image, timestamp)
          VALUES (1002, 'oraclejava_logo2.gif', null, sysdate);
      UPDATE test_bfile
          SET image = BFILENAME('EXAMPLE_LOB_DIR', 'oraclejava_logo2.gif' )
          WHERE id = 1002;
      COMMIT;
* END;
  /

프로시저가 생성되었습니다.

4.        SQL*Plus 에서 테스트 합니다.

SQL> set serveroutput on
SQL> exec Load_BFILE_From_Image

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> exec Write_BFILE_To_File

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL>
SQL>
SQL> SELECT id, DBMS_LOB.GETLENGTH(image) Length FROM test_bfile;

        ID    LENGTH
---------- ----------
      1001        910
      1002        916

참고) 이제 탐색기에서 보면 oraclejava_logo2.gif가 생겨 났음을 확인 할 수 있습니다. 그런데 이 파일은 원래의 oraclejava_logo.gif 보다 사이즈가 조금 큰데 그 이유는 UTL_FILE.PUT_RAW 프러시저에서 CR/LF가 추가 되어서 그러합니다.

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


[기타 다른 강좌는 아래 해당 카테고리를 클릭해주세요]

2013년 8월 19일 월요일

ORACLE Distinct

ORACLE Distinct

오라클자바커뮤니티에서 설립한  개발자실무교육 6년차 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클, SQL, 튜닝, 자바, 스프링, Ajax, jQuery, 안드로이드, 아이폰, 닷넷, C#, ASP.Net)   


Distinct

Select 문은 기본적으로 중복된 행을 모두 표시하므로 Distinct 키워드를 사용하여 중복행의 출력을 방지 한다. Select 키워드 바로 다음에 Distinct를 기술 한다.
Distinct 뒤에 나타나는 컬럼이 여러 개인 경우엔 컬럼의 조합이 중복이 없게 출력 한다.

SQL> select job from emp;
JOB
---------
CLERK
SALESMAN
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
….
SQL> select distinct job from emp;
JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
SQL> select deptno, job from emp;
    DEPTNO JOB
---------- ---------
        20 CLERK
        30 SALESMAN
        30 SALESMAN
        20 CLERK
        ……
SQL> select distinct deptno, job from emp;
    DEPTNO JOB
---------- ---------
20 ANALYST
        20 CLERK
        20 MANAGER

2013년 8월 8일 목요일

[스프링프레임워크, iBATIS, 자바교육]Spring3.X, MyBatis, Hibernate실무과정


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  












Spring3.X, MyBatis, Hibernate실무과정(주말주간(토/일))
교재 자체교재 or PDF 파일제공
강좌 일정 08월17일(토) ~ 08월31일(토)((주말주간(토/일)) 10:00~18:00, 5일) 총 35시간
강의 장소 [A강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차 - 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료 - 580,000원
[고용주환급]대기업:17만원 전후,중소기업:216,968원
[개인수강지원(개인환급)]정규직:440,000원 환급, 비정규직:전액환급

대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다.



* 휴강 :법정공휴일
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항 02-851-4790 번으로 연락 부탁 드립니다.
교육개요 본과정은 자바 웹개발에서 가장 많이 사용되고 있는 자바기반 프레임워크인 Spring3.2를 학습하는데 스프링이 왜 도입되어야 하는지부터, 기본모듈구성, 아키텍처 DI, DL, IoC, 최근 개발모델의 핵심인 Spring AOP, AspectJ Annotation, 표현언어인 SpEL, Spring MVC, Spring MVC TEST Framework, Spring WebFlow, Spring JDBC, Spring Transaction등 개발에 필요한 부분을 체계적으로 실습을 통해 학습하며 SQLMapper인 MyBatis, Hibernate 까지 학습하는 Spring 최고의 교육 입니다.

[특징]
- 실무/실습에 근거한 이론 취득
- 단기간에 스프링 개발자로 양성
- 문답씩 수업으로 수강 효과 극대화
- 이론/실습 과제로 인한 개발력 UP
교육목표 - Spring의 도입배경 및 아키텍처에 대해 이해한다.
(자바빈의 태동부터 EJB, 그리고 현재까지)
- Eclipse, Maven, STS 플러그인에 대한 이해
(개발환경 설정의 이해)
- Spring IoC(DI, DL)의 이해
(실습을 통한 setter,getter,constructor injection의 이해)
- Spring AOP의 이해
(실습을 통한 Spring AOP의 이해, AOP어렵지 않습니다)
- AspectJ Annotation에 대한 이해
(Spring의 AspectJ 지원 및 Annotation 대한 이해 by 실습)
- Spring Web MVC, JDBC의 이해
(실습을 통한 Spring MVC, JDBC의 이해)
- Spring Controller에 대한 이해
(간단한 Controller의 구현을 통한 MVC Font Contrller의 이해)
- Spring Web Flow에 대한 이해
(실습을 통한 Spring Web Flow 및 JSF에 대한 이해)
- SpEL에 대한 이해
(실습을 통한 Spring SpEL의 이해)
- Servlet3 비동기 요청에 대해 이해한다.
(실습을 통한 비동기 서블릿에 대한 이해)
- MyBatis Mapper에 대해 이해한다.
(실습을 통한 MyBatis 구성, 작동원리 이해)
- Hibernate Mapper에 대해 이해한다.
(실습을 통한 Hibernate 구성, 작동원리 이해)
- 실무 개발 환경에 적응력 UP
(Spring, MyBATIS 기반 게시판 작성)
교육대상 - JAVA, JSP 개발자
- 자바개발은 오래 했지만 프레임워크에 대해 자신이 없는 개발자
- 단기간에 스프링을 박살 내고 싶은 개발자.
(스프링 혼자 공부하기는 어렵습니다!!)
선수학습 - JAVA, JSP
 


Spring3.2 J2EE Framework에 대한 흐름과 Spring Framework에 대한 이해
개발 환경 설정(Eclipse4.2, Tomcat7, Spring3.2 다운로드 및 설치)
Maven, STS 플러그인 설치
Spring IoC
DL(Dependency LookUp) &DI(Dependency Injection)
Dependency Pull, CDL(Contaxtualized Lookup)
Setter/Constructor/Mathod Injection
Spring 설정
Spring AOP 란 ?Code, Advice, JoinPoint, PointCut, Aspect, WeavingProxyFactoryBean
Annotation기반 AOP(AspectJ)
기타 Spring의 선언적 AOP 선언
Spring JDBC
Spring MVC
Spring Controller
Spring Webflow, JSF
Spring 표현언어 SpEL
Servlet3 비동기 요청처리
Spring3.2 Transaction 관리
Spring MVC TEST Framework
MyBatis/hibernate [MyBatis]
개요 및 소개
개발환경 설정 및 설치
Data Mapper란
sqlMapConfig 이해 및 환경설정
Spring, MyBatis 연동
SQL Map XML File 이해
SqlMapClient 이해
SQL의 실행(Insert/update/delete) 이해와 실습
고급 쿼리 사용방법의 이해와 실습
Spring MyBatis 응용예제 작성

[Hibernate]
Hibernate 소개
SessionFactory 설정
1:1, 1:다 매핑
Session Interface
Hibernate DML
Spring, Hibernate 예제 프로그램 작성