Skip to content
Bible, Lee, Data

Bible, Lee, Data

Faith, software, data, and everyday life.

CategoriesAll posts

Engineering/Backend

[Spring Boot] JPA(Java Persistence API), Hibernate, Spring Data JPA

JPA(Java Persistence API)는 자바의 ORM(Object-Relational Mapping) 기술을 쉽게 구현하도록 도와주는 API이다.JpaRepository를 상속하는 인터페이스에 메서드 이름만 작성하면, JPA가 구현체를 생성하고 필요한 쿼리문을 자동으로 처리한다. 따라서 개발자는 SQL을 작성할 필요 없이 간단한 메서드 명칭만으로도 데이터베이스를 조작할 수 있다. JPA는 엔티티(Entity)라는 클래스를 이용하여 객체를 데이터베이스에 매핑한다. 엔티티는 개발자에게 테이블 또는 레코드와 유사한 개념이다. 객체를 이용하여 매핑을 처리하므로, 개발자는 객체지향적인 코드를 작성할 수 있다.JPA를 사용하면 CRUD(Create, Read, Update, Delete) 작업을 간편하게 ..

Engineering/Platform

[AWS] Spring 웹 애플리케이션 WAR 파일을 Tomcat에 배포하기 (Legacy Java 구조)

WAR 파일은 Java 웹 애플리케이션을 배포하기 위해 사용되는 형식으로, JSP나 Servlet과 같은 웹 애플리케이션 컴포넌트들이 WAS(Web Application Server) 컨테이너 위에서 실행될 수 있도록 미리 빌드된 형태이다.WAR 파일은 WAS가 실행되는 시점에 웹 어플리케이션 설정과 리소스를 로드하며, War 파일을 실행하기 위해서는 별도의 웹 서버나 WAS가 필요하다는 특징이 있다.Spring으로 개발된 웹 애플리케이션을 WAR 파일로 빌드하고, AWS와 MobaXterm을 활용하여 Tomcat에 배포하는 방법을 살펴보도록 하자! 프로젝트 목표Spring Legacy Project(Legacy Java) 구조를 학습한다.Spring 웹 애플리케이션을 War 파일로 빌드하는 과정을 이해..

Engineering/Backend

[Java] 프로세스와 스레드: 컴퓨터의 작업 처리 단위

웹 브라우저를 실행하면 한 번에 여러 웹 페이지를 로드하고 사용자의 입력을 처리한다. 이러한 복잡한 작업을 가능하게 하는 것이 프로세스와 스레드이다. 프로세스와 스레드를 이해하고 구현함으로써 운영체제의 동작 원리를 이해하고, 효율적인 프로그램을 개발할 수 있다. 또한, 교착상태(프로세스나 스레드가 서로 필요한 자원을 점유하고 있어서 더 이상 진행할 수 없는 상태)와 같은 문제를 해결하기 위한 다양한 동기화 기법을 이해할 수 있다. 프로세스와 스레드 요약프로세스(Process)스레드(Thread)운영체제로부터 자원을 할당받은 작업의 단위프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위프로세스는 각각 독립된 메모리 공간을 가지며 실행되는 프로그램의 인스턴스이며, 스레드는 프로세스 내에서 실행되는 독립적인..

Engineering/Backend

[Spring Boot] JUnit 5 및 Mockito를 활용한 단위/통합 테스트

JUnit은 자바 프로그래밍에서 테스트를 수행하는 데 널리 사용되는 프레임워크 중 하나이다.JUnit을 사용하면 단위 테스트를 작성하고 실행하여 소스 코드 모듈이 의도한 대로 작동하는지 확인할 수 있다. 특히, JUnit 5에서는 모듈화된 구조로 테스트 작성 및 실행을 지원하여 개발자가 효율적으로 테스트할 수 있다. 소프트웨어 시스템의 여러 구성 요소가 함께 작동하여 예상대로 작동하는지 확인하는 것은 통합 테스트에 있어 중요한 단계이다. 이를 위해 Spring Boot는 MockMvc와 Mockito 같은 테스트 프레임워크를 제공하여 웹 애플리케이션을 테스트하고 의존성이 있는 객체를 가짜 객체로 대체하여 테스트를 수행할 수 있다. JUnit과 Mockito를 활용하여 테스트를 하면서 프로젝트 설정 오류부..

Engineering/Backend

[Spring Boot] Naver Search API, Kakao Map API 연동

Naver Search API와 Kakao Map API를 활용하여 특정 키워드로 검색한 장소 검색 결과를 지도에 표시하는 기능을 구현해 보도록 하자.먼저 네이버 API 이용신청 하는 과정이 필요하다. 그리고 Spring Initializr를 이용하여 Spring Boot로 Demo 프로젝트를 생성하여 코드를 작성하는 과정으로 넘어간다. 💡Naver Applicationhttps://developers.naver.com/main/ NAVER Developers네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음developers.naver.com네이버 ..

Engineering/Backend

[Spring] 이상형 월드컵 웹 애플리케이션 개발 과정

사용자에게 여러 가지 선택지를 제시하고, 그 중에서 선호하는 것을 선택하여 대결을 진행하는 웹 기반 이상형 월드컵을 만들어 보도록 하자.이상형 월드컵을 사용자가 진행할 때 하나의 페이지에서 화면이 바뀌면서 진행되어야 하므로 데이터를 유지하기 위해 세션 객체를 사용해 보려고 한다.Spring 프로젝트에서 사용자가 선택한 이상형 월드컵 결과를 저장하고 관리하는 시스템을 구현하면서 코드를 검토하고 각 계층에서 사용한 기술을 점검해 보려고 한다. 💡Spring FrameworkSpring Framework는 자바 기반의 엔터프라이즈 응용 프로그램을 개발하기 위한 전체적인 인프라를 제공하는 경량 프레임워크로, 의존성 주입(Dependency Injection)과 관점 지향 프로그래밍(Aspect-Oriented..

Engineering/Platform

[AWS] 리눅스 기본 명령어 40가지 정리

Linux를 검색하면 SUSE Linux, Oracle Linux 등을 설치할 수도 있다. Linux는 수십 종류가 있으며, 약간씩 커스터마이징이 되어 있다. 그중에 CentOS와 Obuntu가 제일 대중화되어 있다. Java를 한다면 Linux 환경에서 일을 하게 될 확률이 매우 높다. 윈도우(맥)은 개발 환경이고, 리눅스는 운영/테스트를 하는 환경이다. 우리가 만든 프로그램과 시스템을 윈도우에서 테스트할 일은 거의 없으며, 대부분 리눅스 서버에서 가동을 하게 된다. WSL (Windows Subsystem for Linux) 개인 PC면 듀얼 부팅을 하는 방법도 있긴 하지만 불안정하다는 단점이 있다. 그리고 VMWare, VirtualBox 가상머신으로 컴퓨터 안에 또 다른 컴퓨터를 만드는 방식도 있..

Engineering/Backend

[Java] static 멤버와 메서드의 활용 및 주의점

💡static 키워드란? Java에서 static 키워드는 클래스에서 공유되는 변수나 메서드를 정의할 때 사용하며, 메모리에 한번 할당되고 나면 프로그램이 종료될 때 해제된다. static 변수를 남발하면 메모리 관리에 문제를 일으킬 수 있으므로 신중하게 사용해야 한다. 과도한 static 멤버의 사용은 프로그램의 성능을 저하시키고, 메모리 누수의 원인이 될 수 있다. static 변수는 메모리에 고정적으로 할당되어 프로그램이 종료될 때 해제되는 변수이며, static 메서드는 객체 생성 없이 호출이 가능한 메서드라고 할 수 있다. 그리고 상태를 가지고 있지 않은 단순히 메서드만 가지고 있는 구조라고 볼 수 있는데, 이러한 이유로 인해 객체지향에 벗어난 개념이 되어 일부 좋지 않은 시선도 있는 편이다. ..