여니의 프로그래밍 study 225

[Java] 추상클래스 및 인터페이스

1. 추상클래스 : 해당 클래스에는 추상 메서드가 있으니 상속을 통해 구현해주어야한다. 추상클래스는 미완성 설계도여서 인스턴스를 생성할 수 없다. 즉, 추상 클래스는 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 선언부만 작성하고 구현부는 작성하지 않은채로 남겨둔 것이 추상 메서드. abstract class 클래스명{ ... } // 예시 abstract class Player{ abstract void play(int pos); abstract void stop(); } class AudioPlayer extends Player{ void play(int pos) { ... } void stop() {...} } abstract class AbstractPlayer extends Player{ ..

[Java] 패키지 및 import

1. 패키지 : 패키지는 클래스의 묶음이다. 클래스 또는 인터페이스를 포함시킬 수 있고 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 예를 들어 java.lang.String 구문은 java.lang 패키지에 속한 String 클래스라는 의미이다. 정확히는 디렉토리 java의 서브 디렉토리 lang 안에 있는 String.class 파일이다. 2. 패키지 선언 package 패키지명; 3. import 문 : 사용하고자 하는 클래스의 패키지를 미리 명시해주면 패키지명 생략이 가능하다.

[Java] 자바 프로그램 실행 과정 및 동작 원리 (feat. JVM)

1. 컴파일이란? (Compile) : 컴파일은 사람이 이해할 수 있는 언어로 작성된 코드를 컴퓨터가 읽을 수 있는 언어(기계어)로 변환하는 과정을 의미한다. 컴파일의 목적은 코드의 구문과 의미를 확인(ex. 오류코드 확인) 하고 최적화를 수행하며 효율적이고 JVM에서 실행하기에 적합한 바이트코드를 생선한다. 컴파일은 Java 컴파일러(javac) 또는 통합 개발 환경(IDE)에서 수행한다. 2. .java 파일 vs .class 파일 (1) .java 파일 : Java 언어로 작성된 소스 코드 파일이다. 즉 컴파일 되기 전의 소스 파일 (2) .class 파일 : Java 컴파일러에 의해 생성된 컴파일된 바이트코드 파일이다. 자바 가상 머신(JVM)에서 이해하고 실행하는 바이트코드 명령이 포함되어 있다..

[Oracle] 조인에 대해 알아보자

조인 : 두 개 이상의 테이블을 가로로 연결하여 하나의 테이블처럼 출력할 때 사용하는 방식 참고로 집합 연산자는 SELECT문의 결과값을 세로로 연결한다. SELECT * FROM EMP, DEPT 만약 EMP 테이블에 15개의 행, DEPT 테이블에 4개의 행이 있다면 총 15*4=60개의 행이 조회된다. 하지만 위 출력값에는 문제가 있다. 사원 데이터와 부서 데이터가 정확하게 떨어지지 않는 데이터도 모두 출력되기 때문이다. 조인 할 때, WHERE절이 중요한 역할을 한다. SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO 조인의 종류 1. 등가 조인(=내부조인, 단순조인) : 위에서 EMP, DEPT 테이블을 열 기준으로 조인했는데 이 방식이 바로 등가 조..

[Oracle] 오라클 함수에 대해 알아보자.

1. 내장 함수 - UPPER(문자열) : 모든 문자열을 대문자로 변환 - LOWER(문자열) : 모든 문자열을 소문자로 변환 - INITCAP(문자열) : 첫 글자는 대문자, 그 외 글자는 소문자로 변환 SELECT UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME) FROM EMP * 사원 이름에 YEONY 단어를 포함한 데이터 찾기 SELECT * FROM EMP WHERE UPPER(ENAME) LIKE UPPER('%yeony%') - LENGTH(문자열) : 문자열 길이 반환 SELECT LENGTH('한글') FROM DUAL 이때 DUAL이란? : 최고 권한 관리자 계정인 SYS 소유의 테이블로 SCOTT 계정도 사용할 수 있는 더미테이블이다. 더미테이블을 사용하는..

[Oracle] SELECT문 WHERE절 활용

1. LIKE : 일부 문자열이 포함되어 있는 단어를 조회할 때 사용함 -- 1. 길이라는 단어가 포함되어 있는 데이터 조회 SELECT * FROM 사원테이블 WHERE 사원명 LIKE '%길%' -- 2. 길이라는 단어가 포함되지 않은 데이터만 조회 SELECT * FROM 사원테이블 WHERE 사원명 NOT LIKE '%길%' 2. 집합 연산자 (UNION) SELECT문 사이에 사용되며 합집합을 의미하는 연산자. 이떄, 각 SELECT 문이 출력하는 열의 개수와 열의 자료형이 순서별로 일치해야 한다. 출력 열의 개수가 다르거나 출력 열의 자료형이 다르면 에러가 뜬다. 만약 출력 열의 개수와 자료형은 같으나 필드명이 다른 경우에는 에러는 나지 않는다. 하지만 최종적으로 출력되는 열의 이름은 가장 처..

Servlet에 대해 알아보자

서블릿은 클라이언트(웹 브라우저)와 서버(웹 어플리케이션 == was) 간의 통신을 처리하고 동적인 웹 페이지 생성, 데이터베이스 연동 등의 기능을 수행함 즉 서블릿이란 자바 웹 어플리케이션에서 동적인 처리를 수행하는 자바 클래스이고 HTTP 요청과 응답 프로토콜을 다루기 위한 API를 제공한다. WAS 내에 서블릿 컨테이너가 있고 서블릿 객체를 자동으로 생성 및 호출, 생명주기까지 관리해준다. 서블릿 컨테이너란 톰캣처럼 서블릿을 지원하는 WAS 를 의미한다. WAS에서 서블릿 컨테이너를 통해 서블릿을 실행시키고 HTTP 요청을 처리한다. 즉 서블릿 컨테이너가 해당 요청을 처리할 서블릿을 찾아서 실행시킨다. 요새는 서블릿 대신 스프림 프레임워크를 사용하는데, 스프링 프레임워크는 서블릿을 기반으로 구현되어..

Controller, Service, ServiceImpl, DAO, VO에 대해 알아보자

Controller -> 클라이언트의 요청을 받아 해당 요청을 처리하는 로직을 작성한다. 클라이언트의 요청에 대한 응답을 반환한다. Service -> 비즈니스 로직을 추상화한 인터페이스. 인터페이스를 사용하면 구현 세부 정보를 숨기고 클라이언트 코드와 분리할 수 있어서 유지보수성과 확장성을 높인다. ServiceImpl -> Service 인터페이스를 구현하는 클래스. Service 인터페이스에서 선언된 모든 메서드를 구현하기 때문에 해당 인터페이스에서 정의된 모든 비즈니스 로직을 구현해야 한다. 따라서 SErvice 인터페이스를 구현하는 공간이 ServiceImpl이다. → Service(인터페이스)와 ServiceImpl(구현체)을 분리해야 하는 이유는 유연성과 확장성 때문이다. → 인터페이스를 사..

[Oracle] 데이터 모델링 기본 개념 (엔티티, PK, 도메인, 다대다 관계)

1. 엔티티 : 개체로 인식할 수 있는 데이터의 집합 엔티티 == 테이블 인스턴스 == 행 속성 == 열 엔티티는 다수의 인스턴스를 가질 수 있다. (1) 엔티티 -< 인스턴스 (M) 인스턴스는 다수의 속성을 가질 수 있다. (1) 인스턴스 -< 속성 (M) 속성은 하나의 속성값만 가질 수 있다. (1) 속성 - 속성값 (1) 2. PK (기본 식별자 , Primary identifier) : 엔티티에서 인스턴스를 고유하게 식별할 수 있는 속성이다. (= 테이블에서 행을 고유하게 식별할 수 있는 속성이다) 단일 식별자 : 하나의 속성으로 구성된 식별자 복합 식별자 : 2개 이상의 속성으로 구성된 식별자 PK는 NOT NULL이어야 하고 중복되어서도 안된다 (Unique) 간단한 정보로 지정해야 빠르게 식..