자바 컴파일 순서Java 컴파일 과정은 소스 코드를 실행 가능한 형식으로 변환하는 과정입니다.소스코드 작성개발자가 소스코드를 작성(. java)합니다.컴파일자바 컴파일러(Java Compiler)가 자바 소스를 컴파일합니다.이때 나오는 파일은 자바 바이트 코드(. class) 파일로 변환해 줍니다.아직은 컴퓨터가 읽을 수 없고, 클래스 파일은 JVM(자바 가상머신)에서 실행할 수 있는 형태입니다.클래스 로딩컴파일된 바이트 코드를 JVM의 클래스로더(class Loader)에게 전달합니다.클래스 로더는 JVM에 메모리에 올려줍니다.바이트 코드 실행실행 엔진은 JVM 메모리에 올라온 바이트코드들을 명령어 단위로 하나씩 가져와서 실행합니다.바이트 코드를 기계어로 변환하여 실제 하드웨어에서 프로그램이 실행되게 ..
jjuya
다형성과 오버로딩, 오버라이딩다형성하나의 메서드나 클래스가 있을 때 그것이 다양한 방법으로 동작하는 것을 말하며, 오버라이딩과 오버로딩을 통해서 지원함 오버라이딩(overrriding) / 재정의상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 해서 사용하는것 오버로딩(ovveroading) / 확장같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르게 사용하는 것 오버라이딩(overrriding)상위 클래스로부터 상속받은 메서드의 동작을 재정의 하는 것메서드의 이름, 매개변수 반환형이 같음public class Animal{ public void sound(){ System.out.println("울음소리"); }}public class Cat extend A..
DDL(Data Define Language)데이터 정의어데이터를 생성, 수정, 삭제하는 등의 데이터의 전체 골격을 결정하는 역할CREATE데이터베이스, 테이블 생성ALTER테이블 수정DROP테이블 삭제 CREATE TABLECREATE TABLE 테이블명 (속성명 테이터_타입) ALTER TABLEALTER TABLE 테이블명 ADD 속성명 데이터타입ALTER TABLE 테이블명 ALTER 속성명ALTER TABLE 테이블명 DROP COLUMN 속성명 DROP TABLEDROP SCHRMA 스키마DROP DOMAIN 도메인명DROP TABLE 테이블명DROP VIEW 뷰명DROP INDEX 인덱스명DROP CONSTRAINT 제약조건명 DML(Data Manipulation Languag..
일단, 쿠키와 세션을 이해하기 위해서는 쿠키와 세션이 쓰이는 프로토콜인 http에 대해 이해를 해야 한다http란 무엇일까? HTTP1. HTTP란?(쿠키와 세선을 사용하는 이유)HTTP는 클라이언트- 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜이다쿠키와 세션을 사용하는 이유는 HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 사용한다2. HTTP 프로토콜의 특징Connectionless 프로토콜(비 연결성)클라이언트가 서버에 요청(Request)을 했을 때, 응답(Response)을 보낸 후 연결을 끊는 처리 방식서버는 매 요청마다 클라이언트를 식별할 필요성이 생긴 것Stateless 프로토콜(무상태)통신이 끝나면 상태를 유지하지 않는 특징연결을 끊는 순간 클라이언..
HTTP(Hyper Text Transfer Protocol)란?서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜이다HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 정보를 공유하는데 큰 기여를 함 HTTP구조HTTP는 애플리케이션 레벨의 프로토콜 TCP/IP 위에서 작동한다HTTP는 상태를 가지고 있지 않는 Stateless 프로코콜이며, Method, path, Version, Header, Body 등으로 ..
메모리 구조를 이해하기 위해서는 JVM에 대해 알아야 한다! JVM 이란?Java virtual Machine의 약자이며, 자바 가상머신이라고 불린다Java의 바이트코드를 해석하고 실행하는 역할을 한다OS에 상관없이 실행할 수 있는 것이 장점, JVM만 설치하면 어떤 운영체제든 java 파일을 실행할 수 있다 JVM 실행 순서.java 파일을 컴파일러(Compiler)를 통해. class 파일로 변환한다.class 파일을 JVM의 classLoader(클래스로 더)에게 보낸다클래스 로더에서 JVM 런 타임 영역으로 로딩하여 메모리에 올린다자바 소스파일은 컴파일러에 의해 바이트 코드 형태인 클래스 파일이 됩니다그리고 이 클래스 파일은 클래스로 더 가 읽어들이면서 JVM이 수행됩니다 클래스 로더(class..
JSP로 구성할 수 있는 웹 애프리케이션 아키텍처는 크게 Model1, Model2로 나뉜다.이 모델의 큰 차이점은 JSP가- 결과의 출력만 담당하는가?- 결과의 출력뿐만 아니라 요청에 대한 모든 로직을 처리하는가?Model1 JSP 페이지가 비즈니스 로직과 데이터 로직을 모두 처리하는 구조JSP 페이지가 사용자의 요청을 직접 받아 처리하고, 필요한 데이터 처리를 수행 후 결과를 사용자에게 직접 반환함간단하고 작은 애플리케이션에는 적합하지만, 비즈니스 로직과 프레젠테이션 로직이 혼합되어 있어 유지 보수 측면에서 분리함Model2 웹브라우저 사용자의 요청을 servlet이 받음servlet은 웹브라우저의 요청을 받아 view로 보내줄지 model로 보내줄 것인지 정해서 전송해 줌view 페이지는 사..
JPA를 사용하다 보면 의도지 않았지만 여러 번의 select 문이 순식간에 여러 개가 나타나는 현상을 본 적 있을 것이다. 이러한 현상을 N+1 문제라고 부른다.N+1이란?연관관계로 매핑된 엔티티를 조회할 경우 조회된 데이터 개수 (n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 현상@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(length = 10, nullable = false) private String name; @OneToMany(mappedBy = "user") private Set ar..
추상 클래스인터페이스공통점객체 생성객체를 생성(인스턴스화) 할 수 없다추상 메서드추상 메서드를 포함한다기능적 목적상속받는 클래스에서는 추상 메서드를 반드시 재정의 하여 구현해야 한다차이점개념적 목적상속받아서 기능을 확장 시키는데 목적구현 객체의 동일한 실행 기능을 보장하기 위한 목적클래스abstract class( 클래스 o)interface( 클래스 x)일반 메서드일반 메서드 정의가 가능일반 메서드 정의 불가능(Java8 이후 static, default 메서드 정의 가능)멤버 변수클래스와 동일하게 변수 선언 및 사용 가능상수만 사용 가능상속 키워드extendsimplements다중 상속불가능 (단일상 속만 가능)가능둘 다 추상 메서드라는 내용에 대한 구현이 없는 선언 부만 가지고 있는 메서드를 가지고..
JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다트랜잭션 밖에서는 데이터 변경은 반영되지 않는다spring Data JPA 구현 코드에 데이터 변경이 일어나는 코드는 @Transactionl이 추가됨 영속성 컨텍스트 Entity를 저장하고 관리하는 저장소이며, 애플리케이션과 테이터 베이스 사이에 존재하고, entity를 보관하는 가상의 데이터베이스 같은 역할Spring Data JPA에서 제공하는 Save 메서드 코드는 em.persist를 통해 데이터 베이스에 저장하는 게 아니라 영속성 컨텍스트에 저장em.persist(member);// 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미이때, Entity는 영속 상태라고 부름(영속성 컨텍스트가 관리되고 있는 상태)이미 영속..