자바 23

+4 WIL ORM / SQL / MVC

ORM ( Object-Relational Mapper ) :: 객체 - 관계 매퍼 (객체와 RDBMS의 데이터를 자동으로 매핑해주는 것) 객체지향 과 RDMS의 데이터(관계지향)을 매핑 RDB의 관계를 객체에 반영 객체를 통해서 간접적으로 DB데이터를 다룸 객체와 DB데이터를 자동으로 매핑해줌 ORM이 객체와 관계 사이에서 sql을 자동으로 생성 메소드로 DB데이터 조작 = 객체지향 OOP언어를 그대로 쓰면서 객체와 RDMS의 데이터를 매핑 SQL SQL 은 관계형데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어 관계형 데이터베이스는 정보를 표 형식으로 저장 행과 열은 다양한 데이터 속성과 데이터값 간의 다양한 관계를 나타냄 SQL 문을 사용해서 데이터베이스에서 정보를 저장, 업데이트 제거,..

WIL 2023.07.10

+22 JWT 토큰기반 무엇일까?

JWT 진행 순서 1. 클라이언트 사용자가 ID, PASSWORD를 통해 웹서비스 인증 // 여기서 로그인 성공 시 서버에서 "로그인 정보" => JWT로 암호화 (이때 secret key 사용) 2. 서버에서 서명된 JWT를 생성해서 클라이언트에 응답으로 돌려주기 (쿠키에 담아 전달) 3. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부 4. 서버에서 클라이언트로 부터 온 JWT를 검증 순서도 JWT 장점 * 동시 접속자가 많을 때 서버 측 부하 낮춤 * 클라이언트, 서버가 다른 도메인을 사용할 때, 카카오 OAuth2 로그인 시 API JWT 토큰 사용 JWT 단점 * 구현 복잡함 * 네트워크 비용 증가 (클라 -> 서버) * secret key 유출시 jwt ..

TIL 2023.07.06

+19 JPA란 무엇일까?

JPA(Java Persitance API) "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API" API란 "인터페이스(어떤 약속)을 토대로 요청에 대한 응답을 제공해주는 프로그램"정도로 이해할 수 있다. JAVA Persistence Application Programming Interface JPA는 자바 프로그램을할 때 영구적으로 데이터를 저장하기위해 필요한 인테페이스를 제공해주는 것 ORM이란? // ORM의 등장 배경 : 반복적이고 번거로운 애플리케이션단에서의 SQL 작업을 줄여주기 위해서 등장 *의미 객체와 관계형 데이터베이스를 맵핑해주는 기술 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크는 그 중간에서 맵핑! 장점 SQL문이 ..

TIL 2023.07.03

+15 제네릭스(Genrics)

스프링을 공부하면서 더욱 더 제네릭스의 필요성을 느껴 간단하게 정리해보려 한다. 제네릭(Generics) :: 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 사용 :: 꺽쇠 기호 사용, 기호 안에 타입명을 기재 :: 타입을 변수화 한 기능이라고도 표현함 / 객체에 타입을 지정해주는 것이라 보면 된다 :: 여러 개가 필요한 경우 2개, 3개 등 계속해서 추가활 수 있다, ※ 클래스 초기화할때는 제네릭 타입을 갯수에 맞게 넘겨주면 된다. 주의사항 :: !!!! static 멤버에는 제네릭 타입이 올수가 없다!!!! class Sample { public void someMethod() { // Type parameter 'T' cannot be instantiated directly T t =..

TIL 2023.06.28

WIL HTTP 와 MVC패턴이란?

MVC패턴이란? M :: Model V :: View C :: Controller 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리 Model * 데이터와 비즈니스로직을 담당! * 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업 수행 View * 사용자 인터페이스를 담당 * 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현 Controller * model 과 view 사이의 상호작용을 조정하고 제어 * 사용자의 입력을 받아 Model 전달하고, Model의 결과를 바탕으로 View를 업데이트 MVC패턴의 장점 1. 여러개발자가 역할을 나눠 Model, View, Controller 2. 중복코드를 없앨 수 있다. 3. 각 compon..

WIL 2023.06.25

+12 SPRING BOOT / Gradle

Gradle = 빌드 자동화 시스템 자바코드를 자동으로 빌드해줌 Gradle를 사용하면 자바코드를 실행 가능한 jar파일로 만들어줌 build.gradle 외부 라이브러리를 dependencies 에 작성하면 외부라이브러리들을 Gradle이 해당 라이브러리들을 Maven Repository와 같은 외부 저장소에서 자동으로 다운로드 해옴 (편의성 good) Maven Repository = 라이브러리 저장소 쉽게 우리 같은 개발자들이 코드에만 집중할 수있도록 도와주는 코드의 묶음 그럼 Gradle이 다운로드 해온 라이브러리는 어디에서 확인할까? External Libraries

TIL 2023.06.24

+11 (주특기 시작) HTTP란? 무엇일까

오늘부터 시작한 주특기주가 시작이 되었다 3주간 진행되는데 할 양이 어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마어마하게 많다.. 그래서 오늘부터 TIL은 주특기 차에 배우는 내용들을 하나씩 정리를 할 예정이다. 먼저 HTTP란? 통 . 신 . 규 . 약 :: 데이터를 주고 받는 양식을 정의한 통신 규약 중 하나이다. :: 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속 클라이언트가 서버에 요청(Request)을 한다. 서버는 그 요청을 응답(..

TIL 2023.06.24

+8 자바 Arrays. 대표 메서드

알고리즘을 풀다가 Arrays. ~~ 하는 클래스를 많이 사용하는 개발자분들의 코드를 보았다. 그래서 대표적인 메서드를 정리해보려 한다. ※ Arrays에 정의된 메서드는 모두 static 메서드! statc String toString(boolean[] a) statc String toString(char[] a) statc String toString(short[] a) statc String toString(int[] a) statc String toString(double[] a) 등 기본형 배열과 참조형 배열 별로 하나씩 정의될 수 있음 Int 형 Arrays 클래스 메서드 - copyOf() :: 배열 전체를 복사해서 새로운 배열을 만든다. - copyOfRange() :: 배열 일부를 복사해..

TIL 2023.06.19

230618_WIL_객체지향프로그램이란? + JVM?

JVM? 객체지향 프로그램? 이름은 많이 들어봤다. 하지만 누군가 나에게 객체지향프로그램이 뭐야? JVM이라고 알아? 라고 머리속에 정리되어 있지 않고 어렴풋이 본 기억으로 말문이 막힐 것 같았다. 그래서 오늘 한번 WIL의 첫주제로 써보려 한다. 객체지향 프로그램(Object Oriented Programming = OOP )이란? 위키피디아에 기록된 내용으로는 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체" 들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (출처: 위키피디아) 객체 / 지향 / 프로그래밍 을 나눠서 ..

WIL 2023.06.18

+7 자바 Calendar 클래스

Calendar 클래스 :: 자바에서 날짜와 시간을 다루기 위해 Date와 함꼐 많이 사용하는 정적클래스 중 하나 :: 위의 클래스를 사용하기 위해서는 import java.util.Calendar 해야함 :: 추상클래스여서 직접 객체를 생성할 수 없고 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야함 Calendar cal = Calendar.getInstance(); getInstancd() 메서드는 calendar클래스를 구현한 클래스의 인스턴스를 반환 필드를 이용해서 get / set 메서드를 통해 값을 가져오거나 설정할 수 있다. 챗지피티가 너무 자세하게 알려주었다... 글을 보면 car객체를 사용하여 get()메서드로 다양한 작업을 수행할 수 있다는 예시를 볼 수 있다. 아래코드는 프..

TIL 2023.06.17