728x90

자바를 사용하시다 보면 우리가 모르는 많은 freamwork를 사용하게 될 것입니다.

알아야 보인다는 것 처럼 어떠한 장점이 있고 연차가 쌓였을 때 정확한 오더를 할 수 있을 것 입니다.

지금부터 알아볼 자바에서 제공하는 Collection Framework는 우리가 많이 사용하지만 정확한 개념을 모르는 것들을 소개하고자 합니다.

Collection framework 란?

DATA를 더 쉽게 더 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 즉 인터페이스의 집합을 의미합니다.

 

자 그렇다면 인터페이스에는 무엇이 있는지 살펴보도록 하겠습니다.

 

컬렉션 framework

위에 그림과 같이 인터페이스는 총개에서 파생됩니다.

 

1. List 인터페이스

2. Set 인터페이스

3. Map 인터페이스

 

위에 3가지 인터페이스는 아래 표로 간단히 정리를 해보았습니다.

 

인터페이스 설명 예시
List<E> - 순서가 있는 데이터의 집합.
- 데이터의 중복을 허용.
Vector, ArrayList, LinkedList, Stack, Queue 등
ex) 대기자 명단
Set<E> - 순서가 없는 데이터의 집합.
- 데이터의 중복을 허용하지 않음.
HashSet, TreeSet 등
ex) 양의 정수 집합, 소수의 집합
Map<K, V>

- 키(key)와 값(value)의 한 쌍(Pair)으로 이루어지는 데이터의 집합
- 순서가 없음.
- 키는 중복을 허용하지 않음
- 값은 중복 허용.

HashMap, TreeMap, Hashtable, Properties 등
ex) 우편번호, 지역번호(전화번호)

List

배열과 같이 순서가 있는 List 인터페이스는 객체들을 일렬로 늘어놓는 구조를 가지고 있습니다.

객체를 인덱스(순번을 매긴다)를 매겨 객체를 저장하여 검색/삭제 등을 할 수 있는 기능을 가지고 있습니다.

 

이 인덱스를 기준으로 각각의 객체는 Array를 가지고 있습니다. 그리하여 동일한(중복) 값을 참조하더라도 객체들은 값을 참조하는 게 아닌 그것에 있는 Array를 참조하여 값을 가지고 옵니다.

 

그러므로 다수의 사용자들이 동일한 값을 변경하려고 할 때 문제가 생기기도 합니다.

그래서 ArrayList의 경우는 Thread Safety하지 않다라고도 합니다.

 

하지만 여기서 Vertor는 Thread에서도 Safety 합니다.

이유는 Vertor는 synchronized가 되어 있어 들어온 순서대로 값을 변경하기에 Thread Safety 합니다.

 

그러므로 싱글 스레드 환경에서는 Vertor는 쓸데없이 synchronizd를 하기 때문에 성능면에서는 좋지 않아 쓰지 않는 것을 추천합니다.

Set

순서가 없는 데이터의 집합이고 데이터의 중복을 허용하지 않습니다.

Set은 ArrayList 대신에 iterator를 사용합니다.

LinkedList도 순서는 있지만 인데스가 없으므로 iterator를 사용합니다.

 

- HashSet

      빠른 접근 속도를 가지고 있음.

      순서를 모름.

      객체 중복 허용하지 않음.

 

Set <E> = new HashSet<E>();

      

- LinkedHashSet 

      추가된 순서대로 접근 가능

 

Set<E> = new LinkedHashSet<E>();

 

- TreeSet

      정렬방법을 지정하지 않음.

 

Set<E> = new TreeSet<E>();

Map

키(Key) 값(Value)의 한 쌍(Pair)으로 구성된 객체를 저장하는 구조를 가지고 있다.

키는 중복이 허용되지 않지만 값은 중복을 허용할 수가 있다.

기존에 저장된 키와 동일한 키로 값을 저장하면 새로운 값으로 Replace 된다.

 

- HashMap

Map 인터페이스를 대표하는 Map Collection.

주로 Key는 String 타입을 사용하며, String이 문자열이 같을 경우 동등 객체로 사용되게 한다.

 

HashMap<String, String> hashMap = new HashMap<String, String>();

 

- TreeMap

이진트리를 기반으로 한 Map Collection

키와 값을 저장하는 동시에 키를 정렬합니다.

 

* 정렬되는 순서

1. 숫자

2. 알파벳 대문자

3. 알파벳 소문자

4. 한글

 

정렬을 해야 될 필요가 있다면 HashMap 보다는 TreeMap으로 사용하면 성능면에서 좋습니다.

 

TreeMap<String, String> treeMap = new TreeMap<String, String>();

 

 

 

반응형
728x90

최근에는 비대면 문화가 만연해지면서 파일을 전송할 일이 많아서 우리의 개발자들은 파일 전송 코딩을 많이 하게 됩니다.

파일 전송은 편리한 여러 라이브러리가 많이 사용됩니다.

그중 하나인 REST API로 보낼 수 있는 OKHTTPClient를 소개해 드리고자 합니다.

 

OKHttp 라이브러리는 REST API, HTTP 통신을 간편하게 구현할 수 있는 JAVA 라이브러리입니다.

"Square"라는 회사에서 만든 것으로 간편하게 파라미터만 세팅해주면 파일 전송할 수 있는 괜찮은 라이브러리입니다.

 

파일 전송(OK파일 전송 (OKHttpClient REST API) 예제

자 다음은 OKHttp 라이브러리로 만든 파일 전송의 간단한 예제입니다.

 

api접속하기 위한 변수들

위에 사진에 대한 설명입니다.

 

FILENAME : 파일 이름

APIURL     : 접속할 API URL

FILEPATH  : 내가 가져올 파일 경로

APIKEY     : API URL에 접속하기 위한 API key(고객에게 받은 key)

 

파일 가져오기

csvfile 변수에 위에 지정한 filePath와 fileName으로 내가 보낼 파일을 가져옵니다.

 

OkHttpClient 객체 생성

그리고 파일을 보내기 위해서는 꼭 필요한 OKHTTPClient의 파일 전송 객체를 만듭니다.

 

아래 사진들은 Request.Builder를 이용하여

전송방식 put 이용하여 만든 Request 객체 예시입니다.

 

Rest API put 예시

위에 예시를 설명드리면,

addHeader를 메서드로 header 정보를 포함해야 됩니다.

그러므로 우리가 위에 지정한 apiKey를 넣어줍니다. 그 이외에 다른 Header정보가 필요하다면 넣어주시면 됩니다.

url 메서드는 당연히 접속할 URL apiURl을 넣어줍니다.

 

RestUrl 중 put 전송방식을 통해 파일을 보냅니다.

RequestBody 객체 create 메서드를 통해 csvFile을 넣어줍니다.

첫 번째 매개변수에는 MediaType Class에 parse메서드에서 파일 형식을 보내고, 두 번째 매개변수에서는 내가 보낼 파일을 넣어줍니다. 저는 csvfile을 보내야 하기 때문에 csvfile을 넣어주고 build메서드를 통해 Request 객체를 생성했습니다.

 

이후, 위에서 생성된 OKHttpClient 객체를 통해 execute 메서드를 사용하면 전송을 실행하게 됩니다.

정말 단순하게 파라미터만 넘겨도 파일이 전송이 되는 OKHttp 라이브러리는 직접 사용해보니 편하고 좋더라고요.

혹시 파일을 전송할 일이 있으신 분들은 사용하시면 좋을 것 같습니다~

 

수고하세요~!

반응형
728x90

자바개발자로 처음 입문하시면 제일 먼저 보시는 부분이 "아파치 톰캣" 이라는 단어일 것 입니다.

Apache Tomcat에 대해 설명드리겠습니다.

아파치 (Apache)

아파치는 아파치 재단에서 만든 소프트웨어 입니다.

다시 말해 아파치 재단에서 만든 웹서버 입니다.

 

웹서버는 정적리소스 (html,이미지 등)를 취급하는 항상 실행되어 있는 서버라고 생각하시면 됩니다.

그러므로 웹 서버는 클라이언트의 요청에 대해서만 반응하여 요청한 값을 return 을 해주는 기능을 합니다.

 

웹서버 종류에는 Microsoft - IIS 등이 있습니다.

아파치 톰캣 (Apache Tomcat)

아파치 톰캣은 아파치 - 웹서버 기능(정적리소스) + 톰캣 - (동적 리소스)를 함께 다루는 서버라고 생각하시면 됩니다.

즉 이러한 것들은 WAS 라고 부르며 아파치 톰캣은 WAS입니다.

WAS의 종류에는 IBM - WebSphere , JEUS 등 이 있습니다.

 

그렇다면

 

1. '정적 리소스(텍스트, 이미지) 만 쓰는 홈페이지 에서만 웹서버가 쓰이고, 그 외에는 전부 WAS 서버인가요?'

2. 'WEB서버를 쓰지 않고 모두 WAS만 쓰면 되겠네요?'

 

위와 같은 2가지 의문점이 생길수도 있습니다.

 

1번에 대한 의문점에 대해서는 반은 맞고 반은 틀리다고 할 수 있습니다.

정적리소스만 쓰는 홈페이지에서 웹서버만 쓰이는 업체들은 존재합니다. 하지만 그 외에는 전부 WAS만 쓰지 않습니다.

 

그 이유는 무엇일까요?

WAS만 안쓰고 WEB 서버와 WAS를 따로 쓰는 이유?

WEB Service 구조

1. WAS만 쓰게 되면 서버의 과부하가 걸리기가 쉽습니다.

WAS는 DATABASE의 connection 및 다양한 로직을 처리하기 위해 부하가 부하가 걸려있어 정적 리소스를 호출할때 만큼은 웹서버를 따로 두어 과부하를 방지합니다. 그러므로 WAS와 WEB서버를 함께 사용합니다.

 

2. 따로 쓰게 되면 보안에 장점이 있습니다.

WAS와 WEB서버를 분리해서 쓰게 되면 WEB서버의 보안모듈(SSL 등)을 설정하여 타인이 WAS에 접근하더라도 WEB서버에 접근하지 못하여 보안 상 따로두면 유리한 점이 많습니다.

 

3. 여러개의 서버 운용이 가능합니다. (무중단)

네이버의 경우 절대 서버가 중단되지 않습니다. 그 이유는 서버가 여러대이기 때문입니다.

웹서버 하나에서 로드밸런싱을 통해 많은 WAS서버를 가지고 있어 WAS 1개가 중단되더라도 2번째 WAS로 로드밸런싱을 해주면 문제가 되지 않습니다. 

이러한 장점으로 오류 발생으로 배포과정에서 있어 고객이 서버의 끊김에 대한 불편함을 느끼지 않는 장점들이 있습니다.

맺음말

웹서버와 WAS는 대부분 회사가 분리해서 사용하고 있으며 위에 설명과 같이 장점들이 많이 있습니다.

저러한 장점들로 인해 서버관리에도 유용하며 대용량 어플리케이션을 사용하는 기업들은 특히 분리해서 사용하고 있습니다.

 

제가 느낀점들을 최대한 자세하게 쓰려고 노력했는데 잘 이해가 되셨는지 모르겠습니다.

 

추가적으로 앞으로는 WEB서버와 WAS를 구축하는 포스팅을 하여 정확한 이해를 돕도록 하겠습니다.

 

감사합니다~!

반응형
728x90

JPA를 접하게 되면서

왜 JPA를 공부해야되는지 ??
왜 기업들은 JPA을 쓰고 있는지 ??

의문점을 가졌는데 그러한 의문점에 대해서 설명하려고 글을 작성했습니다.

 

1) JPA가 나오게 된 배경

 

현재 나와있는 다양한 에플리케이션을 개발하면서 개발자들은 CRUD용 SQL을 반복해서 작성해야 했고 이런 과정은 비 생산적이었습니다. 그래서  CRUD를 자동으로 생성해주는 도구를 만들어서 사용하기도 했지만 애플리케이션의 요구사항이 추가되는 것 까지는 해결해주지 못했습니다.

객체 모델링을 SQL로 풀어내는 데 너무 많은 코드와 노력이 필요했고, 객체 모델은 점점 데이터 중심의 모델로 변해갔습니다. 많은 개발자들이 이러한 부분을 많이 고민하게 되면서 ORM 프레임워크를 알게 되었고, JPA는 자바 진영의 ORM 기술 표준입니다.

 

 

2) 왜 JPA를 사용해야 하는가?

 

  ● 생산성

    - 위에서 설명했듯이 귀찮고, 비생산적인 CRUD 반복적인 SQL 쿼리를 JPA가 대신 처리해주므로 개발자가 직접 SQL을 작성하지 않게 되었습니다. 이에 따라 생산성이 올라가고 데이터중심의 설계에서 객체 중심의 설계로 변화시킬 수가 있게 되었습니다.

   

      기존

             각 테이블마다 SELECT, INSERT, UPDATE, DELETE 쿼리를 작성해놓고 변경 될때마다 수정해야 됨.

             그리고 이를 갖고오기 위해 mybatis 등으로 갖고오고 binding 처리를 해야됨.

        

      JPA

       em.persist(); 저장
        , em.find(); 조회 등

     

     Entity만 제대로 설계되어 있다면

     이러한 단순한 명령어 하나로 저장, 조회 등 CRUD의 전반적인 작업을 가능하게 됨.

 

  ● 유지보수

   - SQL에 의존적인 개발에서는 엔티티에 필드 하나만 추가해도 CRUD 쿼리에 결과를 매핑하기 위해 전체 SQL을 수정해야만 했습니다. 하지만 JPA에서는 자바 엔티티 클래스에 필드만 추가해도 자동으로 생성되고 매핑이 되므로 유지보수하기에 편리합니다.

 

* 예시로 USER테이블에 직무코드 컬럼 추가

 

      ▶ 기존

         INSERT, UPDATE, SELECT SQL를 쿼리를 수정해야되고, USER테이블에 관련된 모든 테이블에 직무코드 컬럼을 추           가해야됨

 

       JPA

         해당 USER 테이블에 ENTITY를 추가하면 끝!

 

  ● 관계형데이터베이스 객체 사이의 불일치 문제 해결

  - 애플리케이션은 발전하게 되면서 내부의 복잡성은 증가하고 있습니다. 복잡성을 제어하지 못하면 유지보수는 어려워지기 마련입니다. 하지만 객체구조를 테이블 구조에 저장하는데에는 한계가 있습니다. 애플리케이션 자바는 객체지향 언어로 개발하고 데이터는 관계형 데이터베이스로 저장해야 한다면 개발자가 중간에서 해결해야 되는 상황이 벌어집니다. 이러한 과정에서 많은 개발자들의 시간낭비와 비용낭비가 발생하게 됩니다.

 

         ▶ 상속

           - 객체는 상속이라는 기능이 있지만 테이블은 상속이 없다.

               그래서 만약 Human 와 Student 을 저장하려면 INSERT문을 두번 써야되는 문제가 있습니다.

                 EX ) INSERT Human

                       INSERT Student

 

              하지만 JPA는 이러한 점을 Persist메소드로 해결했습니다.

                EX ) Entity로 Student에서 Human을 상속하고

                       jpa.persist(MEMBER) 만 넣으면 간단하게 해결됩니다.

              

              이러한 예시 처럼 간단하게 JPA는 상속에 있어서 객체지향으로 변경하여 해결했습니다.

 

        ▶ 연관관계

            - 객체는 참조를 통해 관계를 맺는다.

               그러므로 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 맺는다.

               마찬가지로 두 Entity를 각각 연결시켜 jpa.find();로 해결합니다.

 

3) JPA 단점

    ● 통계쿼리 등 복잡한 쿼리는 구현하기 어려움

      - 단순한 명령어 하나로 CRUD 구현이 가능하기 때문에 복잡한 관계의 쿼리를

        구현하기는 어려움이 있습니다.

        대처방법으로는 mybatis로 따로 쿼리를 작성하여 구현하면 됩니다.

 

● 학습하기가 어려움

       - 기존의 자바 개발자들이 JPA를 공부하기 위해서는 ORM 개념으로 개념 자체를 바꿔야 하기 때문에

         생각보다 학습하기 어려운 부분이 있습니다.

 

    ● 최적화가 필요

        - 자동으로 생성되는 쿼리가 많고, 쓰이지도 않는 불필요한 것들이 생성되어지기 때문에

          성능향상을 위해서는 최적화가 필요합니다.

4) 정리

전세계 기업들이 추구하는 것은 이윤입니다. 이윤을 위해서는 비용절감, 상품의 퀄리티를 높이는 방법 등이 있습니다. 이러한 기업 이윤추구와 발전과정에서 저는 동일한 시간에 양질의 퀄리티와 비용절감 효과를 이룰 수 있는 JPA가 나오는 것은 다양한 수순이라고 생각합니다.

JPA는 많은 관계형 데이터베이스와 객체지향의 불일치의 문제를 해결했고, 반복적이고 불 필요한 시간낭비 코드를 줄였습니다. JPA 이러한 점들은 기업들이 추구하는 이윤추구와도 많은 부분에서 일맥상통하다고 생각합니다. 그리하여 최근 기업들은 기존 SQL의존의 JAVA 기술들을 JPA로 업그레이드 하는 추세이며 JPA를 배우는 것은 JAVA 개발자로서 가져야 할 소양이라 생각합니다. 앞으로 JPA를 익힌 부분을 꾸준히 업로드 할 것이며 저의 블로그를 통해 조금이나마 JPA를 알아가셨으면 좋겠습니다.

반응형

'java > jpa' 카테고리의 다른 글

2. JPA 시작하기  (0) 2020.06.24
728x90

최근에 카카오톡에서 멀티프로필이란 기능을 추가하면서 많은 사람들이 이 기능을 어떻게 쓰는지 궁금해 하실 것 같아서

제가 블로그로 정리해서 글을 올려보려고 합니다.

 

카카오톡 멀티프로필

카카오톡 멀티프로필은 내 프로필을 각기 다른 친구들에게 각각 다른 프로필로 보여지게 하는 기능입니다.

예를들어 나는 홍길동이란 사람에게는 '내 정면 사진' 프로필을 보여지게 할 수 있고, '김철수'이란 사람에게는 사진없는 프로필을 보여지게 할 수 있는 것 입니다.

 

카카오톡 멀티프로필 설정 및 사용방법

카카오톡 멀티프로필은 사용하기에 앞서 신원증빙으로 제공되는 서비스이므로 신원증빙이 기반이 되어야 합니다.

그러므로  카카오톡에서 제공하는 '카카오톡 지갑'을 통해 신원을 증빙 후 사용해야 합니다.

이 후 카카오톡 멀티프로필 설정을 하면 됩니다.

 

아래는 카카오톡 멀티프로필 설정 및 사용방법을 순서대로 설명했습니다.

1. 카카오톡 지갑 만들기

 지갑을 만들기 위해 미리 알아둬야 되는 점들을 말씀드립니다.

      1. 만 14세 미만의 경우보호자의 동의로 서비스 가입이 가능

      2. 인증서 발급은 발입일로 부터 2년

      3. 앱 삭제 (핸드폰 변경) 시 재 발급

 

카카오톡 지갑 만드는 것은 아래 사진에 QR코드를 찍어 진행하시면 됩니다.

 

자세한 설명은 URL(gusujung.tistory.com/390)을 클릭해주세요! (출처 : 미스구의 Too much information 티스토리 블로그)

 

2. 카카오톡 멀티프로필 설정

     

모바일 카카오톡 친구목록에 들어가면 내 프로필 밑에 위와 같은 내 멀티프로필이란 창이 뜰겁니다.

이곳에서 나만의 멀티프로필을 만들게 될 것이며 총 3개가 MAX로 멀티프로필을 만들수가 있습니다.

 

위에 프로필 설정 터치하여 들어가게 되면 아래와 같은 화면이 나옵니다.

이 화면에서 이름, 사진 상태메세지 등 다양한 프로필에 대해서 변경이 가능합니다.

본인이 원하는 멀티프로필을 작성해보세요. 이쁘게 다양하게!

 

그리고 나의 멀티프로필을 완성하고 완료를 누르게 되면 나만의 멀티프로필을 생성이 최종적으로 완료 된 것입니다.

 

 

저 또한 위와 사진과 같이 TEST라는 멀티프로필을 생성했습니다.

3. 멀티프로필 친구설정

멀티프로필을 완료했으면 이제 어떠한 친구에게 내 멀티프로필을 보여줄 것 인지에 대해 설정을 해야겠죠?

 

위에 사진에 있는 멀티프로필을 클릭(터치)한 후 들어갑니다.

위에 캡처화면과 같이 멀티프로필이 뜹니다.

여기서 친구관리로 들어갑니다.

위와 화면으로 이동되며 이제 지정친구 추가라는 버튼을 클릭(터치)를 합니다.

위와 같이 친구 및 채팅방에서 내가 설정한 멀티프로필을 지정할수가 있으며 지정 후 확인 버튼을 클릭(터치) 하면 됩니다.

 

결론

카카오톡 멀티프로필은 자기PR이 중요한 요즘시대에 대중에 Needs를 잘 파악하여 만든 획기적인 기능이라고 생각합니다.

사용하시는 분들이 잘 사용만 하신다면 각기 다른사람에게 본인PR도 가능한 부분이며, 또 한 내 프로필을 보여주기 싫은 사람들에게 다른 프로필을 보여줄 수 있는 차단 기능도 있다고 생각합니다.

 

제 블로그 글을 보시는 분들께서는 카카오톡 멀티프로필 설정 및 사용방법에 대해 알아가시고 잘 활용하시면 좋겠습니다.

 

 

반응형
728x90

데이터들을 실수로 DELETE, UPDATE 등을 하여 잘못 COMMIT하여 난감하실때가 많으실 겁니다.

저도 이러한 사항을 많이 겪어봤고 많이 혼났을 때가 있었네요.

 

이럴 때 오라클에서 데이터 복구를 위해 지원해주는 것이 있습니다.

 

TIMESTAMP를 통한 복구 쿼리입니다.

 SELECT [컬럼]
 FROM [테이블] AS OF TIMESTAMP 함수

 

예시로는 아래와 같습니다.

 

예시1) 시간 전 조회

 SELECT *
 FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)

이렇게 조회하면 10분 이전의 데이터를 조회할 수 있습니다.

뒤에 단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 있습니다.

 

예시2) 특정 날짜 조회

 SELECT *
 FROM  TEST AS OF TIMESTAMP(TO_DATE('20210316000000', 'YYYYMMDDHH24MISS'))

이렇게 조회하면 2021년 03월 16일에 테이블 데이터를 조회할 수 있습니다.

또한 삭제된 시간도 적절하게 조절해서 검색가능 합니다.

 

예시3) INSERT SELECT를 통한 데이터 복구

 INSERT INTO [테이블]
 SELECT [컬럼]
 FROM [테이블] AS OF TIMESTAMP 함수

 

SELECT INSERT 쿼리로 간단히 테이블 삭제 후 데이터 복구 하시면 됩니다.

 

데이터변경 하고 COMMIT해서 망했다 생각하실 때 이 쿼리로 당황하지 말고 바로 데이터 복구하시길 바랍니다.

반응형
728x90

저는 오라클을 쓰면서 많은 프로시저(Procedure)를 사용하고 있습니다.

 

최근에는 프로시저가 많이 사용하지 않는 추세이긴 합니다.

왜 많이 쓰이는 않는지에 대한 포스팅은 이후에 진행하도록 하겠습니다.

 

우선 Procedure에 대해서 말씀드리겠습니다.

 

프로시저(Procedure)

특정 작업을 수행하는 PL/SQL BLOCK입니다.

매개 변수 및 반복적으로 사용할 수 있는 BLOCK이라고 생각하시면 됩니다.

생성

위에 예시는 PROCEDURE를 생성하는 간단한 예제입니다.

 

LINE별로 설명을 드리면

 

1 LINE  CREATE OR REPLACE PROCEDURE 프로시저명 (

 - 프로시저명으로 CREATE 한다라고 생각하면 됩니다.

 

2~5 LINE 매개변수 IN/OUT/INOUT 데이터 타입

 - 매개변수를 통해 IN/OUT/INOUT을 통해 입출입을 정해주고, 데이터 타입(VARCHAR2, NUMBER 등)을 정해준다.

 

7 LINE 변수 데이터 타입;

 - 프로시저에 맞게 변수랑 사용할 것들을 적어준다.

 

8 LINE BEGIN

 - 프로시저 시작

 

9~12 LINE 실행되어야 될 내용

 

13 LINE EXCEPTION

 - EXCEPTION이 실행되면 THROW 되는 곳

 

14 LINE WHEN OTHERS THEN

 - OTHERS 예외는, 모든 예외를 포괄하는 예외명이며, 예외 처리의 마지막에 기술해야 한다 아니면 compile error가 된다.

 

15 LINE ROLLBACK;

 - 프로시저 실행된 부분 전체 ROLLBACK

 

17 LINE RETURN

 - 프로시저 전체 RETURN

 

실행

실행은 2가지로 구분이 된다.

 

     1. 파라미터가 없거나, IN 파라미터만 있을 때 실행

         CALL       프로시저명 (파라미터들);

         EXEC      프로시저명 (파라미터들);

         EXECUTE  프로시저명 (파라미터들);

         

         예시)

 

         CALL TESTTESTTEST(1,2,3);

         EXEC TESTTESTTEST(1,2,3);

         EXECUTE TESTTESTTEST(1,2,3);

     2. 프로시저 매개변수가 IN/OUT 두 개 다 존재할 때 실행

       

       위에 예제로 만들어진 IN/OUT 두 개 다 존재할 때의 프로시저를 실행한다고 할 때

       아래오 같이 실행하면 된다.

        

        DECLARE

                     A NUMBER;

       BEGIN

               TESTTESTTEST(1,2,3, A);
        END;

    

반응형
728x90

DBeaver를 사용하면서 제가 편리하게 사용했던 환경설정 및 단축키에 대해서 정리하려고 합니다.

저도 처음 DBeaver를 시작할 때는 차근차근 배운다는 마인드로 하나하나 찾아가면서 시작했습니다. 그렇게 익힌 제가 아는 지식들을 정리해서 블로그에 남기도록 하려고 합니다. 이걸 보시는 분들이 도움되셨으면 좋겠습니다.

 

1. 라인

협업하는 입장에서는 쿼리를 보내주고 "몇 번째 라인을 보면 됩니다" 라고 말을 종종 합니다.

그러므로 필요한 라인을 표시하는 방법을 말씀드리겠습니다.

 

윈도우(W) > 설정에 들어갑니다.

환경설정 > 편집기 > 문서편집기로 들어가서

노란색 쳐져 있는 행 번호 표시 체크박스를 누르면 됩니다.

 

2. 개발/운영 스크립트 창 색깔 적용

개발을 하다보면 간혹 엉뚱하게도 운영에 insert, update, delete를 하여 당황스러운 적도 있을 수 있습니다.

이러한 부분을 사전 방지하게 위하여 스크립트 창에 색깔을 적용하여 사용하면 식별이 가능해집니다.

 

윈도우(W) > 설정에 들어갑니다.

환경설정 > 연결 > 연결 유형에 들어갑니다.

이곳에서 각각의 컬러와 name 명 들을 설정하면 됩니다.

설정을 완료 하시면 다음 단계로 각각의 DataBase에 연결해주시면 됩니다.

Navigator > 오른마우스버튼 > Edit Connection으로 들어가서

여기서 각각에 맞는 connection Type을 설정하여 사용하시면 됩니다.

 

3. SQL 키워드 소문자 > 대문자로 자동변환

저는 무조건 대문자로 쓰는 버릇이 있어 소문자로 쓰여있으면 대문자로 다 바꿔줍니다.

저같이 이러한 분들이 계시다면 이 설정을 해두시면 좋습니다.

윈도우 > 설정에 들어갑니다.

편집기 > SQL 포맷에 들어가서 노란색 쳐져 잇는 keyword case에서 "Upper"로 변경하셔서 쓰시면 대문자로 사용 가능합니다. 

 

 

반응형

'tool > DBeaver' 카테고리의 다른 글

DBeaver 설치 및 사용법(무료 tool)  (4) 2021.03.22

+ Recent posts