본문 바로가기

Development

(98)
[Basic] Softeer Lv. 1 A+B java 풀이 (+ BufferedReader의 관해) https://softeer.ai/practice/6295 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai Buffer 버퍼(buffer)는 데이터를 임시로 저장하는 메모리 영역을 말합니다. 주로 입출력 작업에서 사용되며, 데이터를 한 곳에서 다른 곳으로 전송하는 도중에 일시적으로 그 데이터를 보관하는 역할을 합니다. 예를 들어, 파일을 읽을 때 한 번에 한 바이트씩 읽는 것은 매우 비효율적입니다. 따라서 대부분의 입출력 라이브러리는 내부적으로 버퍼를 사용하여 한 번에 여러 바이트를 읽어옵니다. 그런 다음 필요할 때마다 이 버퍼에서 데이터를 가져와 사용합니다. BufferedReader는 이런 방식으로 동작합니다. 내부적으로 문자 데이터를 저장하는 버퍼를 가지고 있으며, read()..
[Spring] ORM ORM (Object Relational Mapping) 객체 지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법 보통 객체는 클래스를 의미하는데, 데이터베이스의 테이블과 클래스는 불일치가 존재할 수 있음 ORM이 이 둘의 불일치와 제약사항을 해결함 ORM을 이용하면 쿼리문 작성이 아닌 코드(메서드)로 데이터를 조작할 수 있음 ORM의 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있음 이는 쿼리문 작성의 양이 현저히 줄어 개발 비용 감소 객체지향적으로 데이터베이스에 접근하여 코드의 가독성을 높임 재사용 및 유지보수가 편리 ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이 객체들은 각 클래스로 나뉘어 ..
[Spring JPA] DDL, DDL 옵션 DDL Spring JPA에서 DDL(Data Definition Language)은 데이터베이스 스키마를 생성하거나 변경하는 SQL 명령을 의미 DDL에는 보통 'CREATE', 'ALTER', 'DROP' 등의 명령어가 포함됨 Spring Boot에서 JPA를 사용할 때, 'spring.jpa.hibernate.ddl-auto' 라는 설정 속성을 통해 Hibernate가 어떻게 DDL 명령을 실행할지를 정의할 수 있음 ddl-auto 옵션 종류 create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE) create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용) update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB..
[개발 일기]JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. (OSIV Anti Pattern) 스프링을 다시 공부하려고 새 프로젝트를 만들어서 바로 실행만 했더니, 이런 경고가 발생했습니다. WARN 6264 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 뤼튼(GPT 4)에게 물어봤는데 답변은 이러했습니다. 이 경고 메시지는 Spring Boot에서 'spring.jpa.open-in-view' 설정이 기본적으로 활성화되어..
[Spring] 스프링 부트의 동작 방식 스프링 부트의 동작 구조 스프링 부트에서 spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작함 서블릿(Servelt)은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술로, 클라이언트로부터 온 HTTP 요청에서 URL, header, 요청 파라미터를 추출한다. 그리고 애플리케이션 로직과 상호작용하며 response를 생성한다. 서블릿들은 서블릿 컨테이너에서 관리함 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할을 수행하는 주체 톰캣은 WAS의 역할과 서블릿 컨테이너의 역할을 수행하는 대표적인 컨테이너 서블릿 컨테이너의 특징은 다음과 같다. 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주..
[Spring] 스프링 부트란? Spring Framework 스프링 프레임워크(Spring Framework)는 자바(java) 기반의 애플리케이션 프레임워크. 현재 우리나라의 '전자정부 표준 프레임워크'의 기반 기술로 채택되어 공공기관 웹 서비스를 개발할 때도 사용. 엔터프라이즈급 개발을 편리하게 만들어주는 '오픈소스 경량급 애플리케이션 프레임워크'로도 불림. 스프링의 핵심 가치는 "애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게끔 하는 것" 제어 역전 (Inversion of Control) 객체의 관리를 컨테이너(Spring 컨테이너 또는 IoC 컨테이너)에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부름 일반적인 자바 개발의 경우, 객체를 사용하기 위해 아래와 같은 코드를 사용함 pa..
[Stack] 프로그래머스 level 2 올바른 괄호 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 초기 문제 접근 int 변수로 flag를 하나 만들고, '('는 ++, ')'는 --로 최종 flag가 0이 아니면 false, 0이면 true로 생각했으나, ")()(" 같은 문자열을 거르지 못했음 나중에야 알았던게 flag가 < 0 이 되면 바로 false를 하면 됐구나.. 문제 접근 '('를 만나면 스택에 넣고 ')'를 만나면 pop 근데 pop할게 없다면(스택이 비..
[Spring] JSP/Servlet부터 Spring, 그리고 Springboot 까지 JSP/Servlet 초기의 웹 개발에서는 Java Servlet을 통해 웹 애플리케이션을 개발하였습니다. Servlet이란 웹 어플리케이션을 생성하는 데 사용되며, 서버 측에 위치하며 동적인 웹 페이지를 생성합니다. Servlet은 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현을 통해 이루어지게 됩니다. Servlet API에는 Servlet, GenericServlet, HttpServlet, ServletRequest, ServletResponse 등과 같은 많은 인터페이스와 클래스가 있습니다. Servlet 이전에는 CGI(Common Gateway Interface) 스크립팅 언어가 서버 측 프로그래밍 언어로서 일반적이었습니다. 그러나 이 기술에..