전체 글 143

JPA 사용법(1) -- JPA 사용법

JPA란? 자바와 관계지향 데이터베이스간의 언어적인 차이를 해소시키기 위한 api. 관계지향적인 DB를 객체지향적으로 해석해주며, 객체지향적인 JAVA를 관계지향적으로 변환해주는 일종의 번역기 역할을 한다고 생각하면 된다. JDBC와의 차이 JDBC는 데이터베이스와 소통하기 위한 api이고, JPA는 소통하는 관계지향적 db를 객체지향적으로 바꾸는 api로 기술적인 개념이라고 봐야한다. 형식(이미 db에 만들어진 테이블이 있다고 가정하겠다) 1. 테이블과 1:1대응될 테이블과 이름이 같은 Entity클래스를 하나 만든다. package com.study.springboot; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lo..

공부/springboot 2023.01.26

개발용 임시 DB : H2DB

H2DB란? 따로 설치하지 않고 사용할수 있는 관계형 데이터베이스. 자바 기반으로 설계되었으며, 임베디드 모드의 인메모리 모드를 사용할수 있다. 가볍고 빠르며 브라우저 기반 콘솔 역시 사용 가능하나, 어디까지나 개발 과정에서 간단한 테스트를 위해 개발된 데이터 베이스이기 때문에 상용으로 사용하기에는 무리가 있다. In-Memory db란? 다른 상용 db들처럼 데이터를 외부 저장장치에 저장하는 것이 아닌, 메모리에 저장하는 방식의 db를 말한다. 다만 메모리에 저장하기에 휘발성이 존재한다. 최종적으로는 외부 저장장치에 저장하지 않으면 모든 데이터가 날아갈 위험이 존재하기에 주로 테스트 용도의 db로 사용한다. 스프링 부트를 이용해 사용하기 1. 공식 사이트에 다운받는다. http://www.h2datab..

공부/springboot 2023.01.25

MVC -- Model(2) : 데이터 받아오기

형식 1. html파일에서 보내고자 데이터들을 보내는 요청사항 이름을 지정해준다. 2. @RequestMapping 등을 이용하여 요청사항에 대한 응답 함수를 짠다. 코드를 직접 보며 확인해보자. 로그인 화면입니다. 데이터 입력 html 로그인 결과 화면 username 값 password 값 데이터 출력 html 데이터 수신의 3가지 방식 1. 기본형 - HttpServletRequest를 통한 입력값 받기 @RequestMapping("/loginAction1") public String loginAction1(HttpServletRequest request, Model model){ // 받아온 데이터 변수로 저장 String username = request.getParameter("usernam..

공부/springboot 2023.01.25

데이터의 전송 타입( Get/ Post)

form태그를 통한 이해 html form태그의 method를 통해 입력받은 데이터의 전송 타입을 정할수 있다. post와 get 둘로 나뉘어 지는데, 두 방식의 가장 큰 차이점은 데이터의 가시성이다. get방식은 서버로 보내는 데이터를 URL에 담아서 전송한다. 따라서 사용자는 물론 제 3자도 어떤 데이터를 보냈는지 쉽게 확인 가능하다. post방식은 서버로 보낼때 HTTP메세지의 바디 태그에 담아서 보낸다. 여서기 HTTP메세지는 데이터의 전송 목적으로만 일시적으로 사용되는 일종의 포장 박스처럼 생각하면 된다. 그러나 은닉일뿐 암호화가 아니기에 보안에 더 뛰어나다고는 볼 수 없다. 둘의 차이를 확인해보자. 1.get방식 2. post 방식 언뜻 보면 post방식이 더 보안적일것 같지만, post방식 ..

공부/springboot 2023.01.25

MVC -- Model(1): 데이터 전송하기

Model 클래스 model 클래스는 mvc패턴을 따라 웹을 설계할수 있도록 스프링프레임워크에서 지원하는 클래스이다. mvc의 m을 맡고잇는 model은 데이터를 보관하는 역할을 한다. model은 데이터를 controller로 보내거나 받으며, controller는 데이터를 가공하고, view는 받은 데이터를 토대로 화면을 구현하거나, 입력된 controller로 데이터를 보낸다. model에 의해 불러와지는 데이터는 크게 4가지 종류로 존재한다. 내장객체의 생명주기 1. application : 웹브라우져 닫을때까지 객체가 살아있다. 2. session : 로그아웃을 하거나 브라우져를 닫을때까지 살아있다. 3. request : 요청에 대한 응답이 있을때까지 살아있다. 4. model : reques..

공부/springboot 2023.01.25

타임리프 레이아웃

타임리프 레이아웃( ThymeleafLayout) 타임리프에는 레아이웃이라는 기능이 존재한다. 우리가 어떤 웹사이트를 만들때, 각 창에 헤더나 풋터처럼 공통된 부분이 상당부분 존재하게 된다. JS에서는 jQuery의 load함수를 이용해 이런 공통되는 부분들을 코드로 작성하지 않고, html파일 통째로 끌고오는 식으로 구현했던 것과 같이, 타임리프 레이아웃 역시 이를 위한 기능이다. 다만 역시 JAVA답게 그 적용방식이 JS보다 훨씬 복잡하다. 사용법 1. 타임리프와 타임리프 레이아웃을 html파일 상단에 끌고온다. 2. 공통 양식 코드만 작성한 html 파일을 만든다. 공통적인 부분의 html은 각각 다른 파일을 만들어 코드를 작성하자. 그렇게 만들어진 파일에 구현된 태그에 th:fragment="he..

공부/springboot 2023.01.25

자바(java)의 생성자 함수

생성자 함수 (Constructor) : 객체 생성시 자동으로 호출되는 함수 형식 public 클래스이름() { } - 다른 함수들과 달리 int나 String처럼 반환형식 지정을 안함. //클래스에서 중요한 개념들 //1.상속 : 모듈화/계층화, 중복제거 //2.생성자함수 : 객체생성시 자동으로 호출되는 함수 //3.다형성 : 상속관계에서 하나의 객체가 여러 타입을 가질수 있다. // : B클래스가 A클래스를 상속했다면, 타입을 B타입,A타입 // 2개 다 타입으로 가질 수 있다. //4.추상화 클래스 : 일반 클래스(일반 함수) + 가상함수 //5.인터페이스 : 인터페이스 타입에 가상함수만 있는 것 //생성자 함수 : Constructor // : 객체생성시(new) 자동으로 호출되는 함수 // 용도..

공부/java 2023.01.23

자바(java)의 클래스 상속

클래스의 상속 10개의 클래스를 만든다고 가정하자. 그 모든 클래스에 똑같은 변수와 함수가 3개씩 있다고 할때, 우리는 총 30번을 중복되는 똑같은 코드를 작성하게 된다. 이처럼 기존에 있는 클래스에서 변수와 함수를 사용하고자 할때, 또는 중복되는 변수와 함수를 하나로 통일하고자 할때, 상속을 이용할수 있다. 클래스의 상속: 클래스 내부의 매소드와 속성(변수)들을 자신의 것처럼 사용가능하게 하는 것 상속의 이점: 코드 중복을 피한다. 계층적인 코드 작성이 가능하다. 상속의 형식 class (자식 클래스) extend (부모클래스) //클래스의 상속 //상속 : 부모의 자산을 자녀가 물려받는 것 //클래스의 상속 : 부모클래스의 자산(함수/변수)를 자녀클래스가 물려받는다. //물려받는다 : 접근권한을 갖는..

공부/java 2023.01.23

자바(java)의 싱글톤 패턴

싱글톤 만들기 싱글톤은 프로그램 안에 유일한 객체를 말한다. 마치 nft코인처럼, 클래스로 만든 객체가 단 하나만 존재하는 객체인 것이다. 만드는 법은 다음과 같다. class UniqueOne{ int no = 1; private static UniqueOnesingleton= new UniqueOne(); static UniqueOne getInstance(){ returnsingleton; } } 이는 하나의 공식과도 같다. 일단 명령어 하나하나 살펴보자. 싱글톤 클래스의 no속성에 10을 부여했다. 그리고 클래스 안에서, 자기 클래스를 객체화 했다. 이때 private 예약어를 써서 캡슐화, 즉, 쉽게 접근 할수 없게 만드는 은닉화를 했고, 이어서 static 예약어를 통해 고정된 메모리 주소값에..

공부/java 2023.01.23

자바(java)의 오버로딩(Overloading)

메소드 오버로딩(Overloading) - 메소드 확장 매개변수의 타입과 갯수를 다르게 함으로서 함수의 기능을 확장하는 것을 말한다. 이를 사용하면 함수를 계속 만들지 않고, 기존에 있는 함수의 매개변수를 달리함으로서 계속 사용 가능하다. static void echo() { //메아리처럼 콘솔에 출력해주는 함수 System.out.println("echo"); } static void echo(int param){ System.out.println("echo:"+param); } 위의 함수를 생각해보자. 함수의 이름이 똑같으나, 밑의 함수는 pram이라는 매개변수를 갖는다. echo(); echo( 10 ); 출력값: 홍길동 홍길동:10 이 기능을 통해 우리는 println에 문자열형과 정수형, 실수형..

공부/java 2023.01.23