공부 95

스프링이란?

스프링의 존재 의의 스프링은 객체지향적인 개발을 도와주기 위한 프레임워크다. 가장 기둥이 되는 아이디어는 비지니스 객체를 관리해주는 컨테이너가 존재하고, 그곳으로부터 객체를 받아온다는 것이다. 이는 EJB(엔터프라이즈 자바 빈즈) 에서 시작된 아이디어이나, 기존의 EJB 프레임워크는 너무 복잡하고 기술 종속적이었기에 객체지향적 개발에 큰 난관이 존재했다.이 문제를 해결하고자 나온것이 '스프링(Spring)로, EJB라는 기술적 겨울을 몰아내고 봄을 가져왔다는 의미에서 이름을 붙었다. 스프링부트란? 스프링을 편리하게 사용할수 있도록 지원하는 기술로 최근에는 대다수 기업들에서 이를 사용한다. 빌드 구성의 이점, 관례에 의한 간결한 설정, 라이브러리 자동 구성, 내장 웹서버 등의 편리함을 제공한다.

공부/springboot 2023.05.10

코틀린의 클래스

//ex21 fun main() { //2중 반복문 // ***** // ***** // ***** // ***** // ***** for( i in 0 until 5) { for( j in 0..4 ){ print("*") } println() } //연습문제 // readLine()함수로 n을 입력해서 3이 나오면, // * // *** // ***** // n을 입력해서 4가 나오면 // * // *** // ***** // ******* print("n을 입력하세요: ") // readLine() 함수로 입력받은 값을 정수형으로 변환합니다. val n = readLine()?.toInt() ?: 0 for (i in 1..n) { // 공백 출력 for (j in 1..n-i) { print(" ..

공부/kotlin 2023.03.21

코틀린: 코틀린 함수

코틀린의 함수 코틀린은 함수형언어와 객체지향언어를 합쳐놓은 언어이기에, 함수형 언어의 특징을 가진다. 형식 fun 함수명( 매개변수: 타입 ) : 반환값 타입 { return 반환값 } 한줄함수 함수의 본체 코드가 한줄일때는 중괄호와 return 문자를 생략 가능하다. fun 함수명 (매개변수 : 타입) : 반환값 타입 = 반환값 반환형 타입 생략(타입 추론) fun 함수명 (매개변수 : 타입) = 반환값 //ex10 fun main() { //함수의 간략한 표현 println( add(10, 20 ) ) println( add2(10, 20 ) ) println( add3(10, 20 ) ) } fun add(a: Int, b: Int): Int { return a + b } //함수의 본체코드가 한줄..

공부/kotlin 2023.03.20

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

코틀린 인텔리제이, 파이참과 같은 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

스프링부트: 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