분류 전체보기 149

코틀린: 코틀린의 기본 문법

코틀린 인텔리제이, 파이참과 같은 IDE 제작사 젯브레인스에서 개발한 언어로, 자바(JAVA)를 기반언어로 두고 있기 때문에 100% 호환이 가능하며 컴파일시 자바 바이트 파일(.class)이 생성된다. 주로 안드로이드 앱, 스프링부트 앱에서 사용되어 앱 전용 언어로 오해받곤 하지만, 실제로는 다양한 용도로 사용할수 있는 언어다. 특징 1. 타입 확장형언어이나, 원한다면 JS처럼 비확정형 언어처럼 사용할수 있다. (비확정형 언어의 경우, 변수의 타입이 코드의 중간에 바뀔 위험이 존재한다. (예: String -> Number)) 2. 오버헤드 없는 NULL 안정성을 제공한다. *오버헤드: 어떤 프로그램을 실행할 시, 다른 위치의 코드를 실행시켜야 할 때가 있다. 이 코드를 실행시키기 위해 시간, 메모리 ..

공부/kotlin 2023.03.19

스프링부트: 시큐리티(1)

시큐리티 인증과 인가를 쉽게 다룰수 있게 도와주는 스프링 디펜던시. 인증을 받고 권한을 부여하는 과정을 대신해준다. 덕분에 각종 공격 및 해킹에 대한 방어를 사용자가 일일이 구현하지 않아도 된다. 루트 매핑("/")이 자체적인 로그인 화면으로 변한다. 이후 어떤 url을 요청하건 간에 자체적인 로그인 화면만 나오게 되는데, 이때 id는 username, 비밀번호는 스프링부트를 실행할때 나오는 일련의 숫자가 된다. 만약 본인이 원하는 비밀번호와 아이디로 바꾸고 싶다면 apllication.property 를 통해 설정해줘야만 한다. # security # defallt username/password spring.security.user.name=user # id설정 spring.security.user...

공부/springboot 2023.02.20

프로젝트 근황 보고

최근 글을 쓰지 못했다. 새롭게 배운 내용이 없을 뿐더러, 너무 바빴기 때문이다. 약 2주 전부터 쇼핑몰을 만드는 간단한 프로젝트에 돌입했는데, 예상치 못한 문제가 터지면서 정신없이 바쁜 시간을 보내고 있다. 이제 관리자 페이지는 다 만들었고 슬슬 사용자 화면과 db를 연동시켜 실제 서비스가 가능한 수준으로 구현해보려고 한다. 코드를 짜면서 배운게 많지만 죄다 지엽적이고 테크닉적인 부분이라 따로 정리하기가 마땅치않다. 언제 시간이 나면 정리를 해 보겠다.

카테고리 없음 2023.02.20

DTO/ DAO/ VO의 개념 정리

DTO/DAO/VO는 모두 객체, 즉 클래스이다. MVC와 비슷한 개념이 많아 햇갈려서 이해하는데 시간이 좀 걸렸다. 둘 모두 프로그램 설계와 관련된 개념이나 차이점이 존재한다. 기본개념 1.DTO(Data Transfer Object) 이름을 직역하면 데이터 변환 오브젝트로, 실제로 이름 그대로의 역할을 수행한다. 이에 대해 검색해보면 대부분 "각 계층간 데이터 교환을 위한 객체"라는 설명과 레이어 계층 사진을 넣고 설명을 끝낸다. 그러나 나는 최대한 이해하기 쉽게 정리하려고 한다. 때문에 개념을 완벽하게 이해하는데 있어 약간의 미흡함이 존재할지는 모르나, 무슨 역할을 하는 객체인지는 이해할수 있을 것이다. DTO란 쉽게 이해하자면 DB에서 가져온 데이터 중, 필요한 정보만 빼온 객체를 따로 만든 것이..

카테고리 없음 2023.01.29

스프링부트: Junit을 이용해 테스트 하기

Test란? 개인이 간단하게 어떤 서비스를 구현한다고 하면 코드는 길어봐야 수천줄 정도 나오겠지만, 회사의 서비스는 만줄은 우습게 넘어갈 정도로 방대한 양의 코드가 동작한다. 헌데 긴 코드에 무턱대고 새로운 코드를 끼워넣으면, 그 코드가 어떻게 작동하는지 확인하기 위해 재실행하는데 리소스가 많이 들 뿐만 아니라, 오류가 발생할 경우 원인이 무엇인지 찾기도 어려워진다. 이런 일을 방지하기 위해 프로그램을 작은 단위로 쪼개서 옳바르게 동작하는지 미리 확인하는 것이 바로 Test다. 과거에는 개발자들이 직접 테스트 환경을 만들어야 했으나, 테스트를 필요로하는 개발자들이 늘어남에 따라 스프링부트에서는 테스트 환경이 내장되어 있기에 따로 할일은 없다. 방법(인텔리제이에서 만드는 방법) 1. 테스트하고 싶은 클래스..

공부/javascript 2023.01.27

JPA 사용법(2) -- JPQL

JPQL이란? SQL을 자바에서 사용할수 있게끔 변환된 SQL. JPA는 테이블이 아닌 엔티티 객체를 중심으로 개발하기 때문에 쿼리문을 사용하지 않는다. 그러나 어찌되었건 특정 데이터를 검색하기 위해서는 쿼리문의 역할을 해줄 것이 필요한데, JPA에서는 이를 위해 JPQL을 제공한다. JPQL은 객체를 대상으로, SQL은 테이블을 대상으로 쿼리한다는 것이 차이점이다. 특징 1. 엔티티와 속성은 대소문자를 구분하지만, 키워드는 구분하지 않는다. 예) select m from Member as m where m.age > 18 SELECT m FROM Member as m WHERE m.age > 18 둘 모두 동일하게 작동한다. 2. 테이블이 아닌 엔티티 객체 이름을 사용하며, 마찬가지로 컬럼이 아닌 필드..

공부/springboot 2023.01.26

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