본문 바로가기

전체 글

(65)
AOP와 @Transactional 알아보기 안녕하세요, 오늘은 자바 스프링에서 사용되는 @Transactional 어노테이션이란 무엇인지, 작동 원리에 대해서 살펴보겠습니다. Transactional에 대해 알아보기 전에, 한 번도 다룬적 없었던 AOP에 대해서도 다루어 보겠습니다. AOP?(Aspect Oriented Programming) 더보기 AOP는 인프라 로직과 비즈니스 로직을 분리해 모듈성을 높이기 위한 목적으로 사용합니다. 위 문장에서 비즈니스 로직이란 무엇일까요? 비즈니스 로직은 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분을 일컫는다라고 합니다. 즉, 데이터의 상태 값을 조작하는 로직으로 볼 수 있겠죠. DB에 데이터를 insert하거나 변경하는 로직은 모두 비즈니스 로직에 해당할 것입니다. 반대로 인프라 로직은 ..
Jar에서만 View의 경로를 찾지 못하는 이유 간단한 스프링 어플리케이션을 작성하다가 생긴 문제점에 대해 공유하고자 합니다. Static 파일이 아닌 templates 파일에 대해서 컨트롤러에서 아래 예시처럼 경로 앞에 "/"가 포함되는지 여부에 따라 jar에서는 뷰를 찾지 못하는 404 에러가 발생했습니다. @GetMapping("/users/list") public String userList(Model model) { model.addAttribute("user", joinService.lookupAllUser()); return "user/list"; // IDE + Jar에서 문제 없이 작동 } } @GetMapping("/users/list") public String userList(Model model) { model.addAttrib..
Spring 프로젝트 AWS EC2 배포하기 - H2 DB 연결 이번 포스팅에서는 H2 DB를 AWS EC2 내부에 데이터베이스로 연결시켜 사용하는 방법을 알아보겠습니다. H2는 mysql와 같은 관계형 데이터베이스(RDBMS)입니다. 오픈소스로 무료로 사용할 수 있으며, 웹 콘솔 기반으로 쉽게 설정해서 사용할 수 있어 소규모의 어플리케이션에서 활용됩니다. 표준 SQL의 대부분을 지원하며(약간의 문법차이는 있습니다.) 용량이 낮아 테스트 환경, 로컬 환경에서도 많이 사용됩니다. 이제, H2를 이용해서 배포하기 위한 환경 설정을 진행해보겠습니다. H2 DB 설정 H2DB는 Java 기반 RDBMS 이므로 자바가 설치되어 있어야 합니다. 먼저, http://h2database.com/html/main.html에서 다운로드 해줍니다. Ubuntu인 EC2에서 사용하므로 A..
Spring 프로젝트 AWS EC2 배포하기 - 인스턴스 생성, 서버 설정 안녕하세요. 오늘은 AWS의 EC2를 이용해서 웹 서버를 무료로 배포하는 방법에 대해서 알아보겠습니다. 아마존의 EC2는 Amazon Web Services의 클라우드 컴퓨팅 서비스 중 하나입니다. EC2는 Elastic Compute Cloud의 약어로, 유연한 컴퓨팅 리소스를 제공하여 개발자 및 기업이 원하는 만큼의 리소스를 빌려서 스케일링이 가능한 애플리케이션을 실행할 수 있도록 한다는 것입니다. AWS EC2를 사용하면 가상 서버를 구축하고 실행할 수 있으며, 이를 통해 사용자는 필요한 만큼의 컴퓨팅 리소스를 언제든지 이용할 수 있습니다. 또한, EC2 인스턴스를 시작하고 중지하고 재시작하는 등의 작업을 쉽게 수행할 수 있으며, 이러한 인스턴스는 다양한 운영 체제를 실행할 수 있습니다. AWS E..
[TIL] 객체 지향 설계 - 사다리 타기 게임 (Java) 1주 동안 코드스쿼드 과정의 사다리 타기 게임을 구현했습니다. 구현하면서 느꼈던 배운 점을 간단히 정리해보겠습니다. Commit과 PR하기 - 작은 커밋 단위, 의미있는 커밋/PR 메시지 Commit은 마치 게임에서 세이브 포인트처럼 git에서 프로젝트의 상태를 저장하고 있는 객체라고 볼 수 있습니다. 언제든지 특정 시점으로 돌아갈 수 있는데요, 작은 규모의 개발 환경에서는 커밋 로그를 잘 남기는 것이 그렇게 중요하지 않을 수 있습니다. 언제 어떤 작업을 했는지 비교적 잘 기억할 수 있으니 말입니다. 그렇지만 프로젝트의 규모가 커지고 여러 사람이 협업을 하게되면, 어느 시점에 누가 어떤 변경사항을 만들었는지 알기 어렵게되고, 따라서 어느 시점으로 돌아가야할지 로그가 잘 남아있지 않다면 찾기 어려울 것입니..
코드스쿼드 CS16 과정 중간 회고 분명 1월 1일에는 오늘부터 갓생산다고 결심을 했지만... 연초에 스스로했던 약속을 지키지 못한 것 같아 슬픕니다. 2개월 동안 코드스쿼드 온라인 과정을 진행하면서 느낀 부족한 점을 반성해서 아래 목표들을 세워보았습니다. 1. 건강 관리 하기 점점 크게 느끼고 있는 부분입니다. 앉아있는 시간이 길다보니 개발자의 고질병인 거북목과 라운드 숄더가 가속화되는 기분입니다. 자세가 좋지는 못한 것 같은데, 더 안좋아지기 전에 운동의 필요성을 실감하고 있습니다. 1~2월에는 CS공부를 하느라 못했지만(말도 안되는 핑계입니다), 3월부터는 꼭 주기적으로 운동을 하려고합니다. 개발자가 되는 길은 마라톤처럼 천천히 나아가야하는 길입니다. 마음은 준비가 되었지만 몸은 준비가 되지 못했을 수도 있으니까요. 2. 계획과 루틴..
Git의 내부 - 파일 상태와 Git 객체 알아보기 이번 포스팅에서는 Git의 내부에 대해서 살펴보겠습니다. 본 포스팅에 서술된 내용은 아래 내용을 참고하여 정리한 내용입니다. https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-%EA%B0%9C%EC%B2%B4 Git - Git 개체 여러분이 사용하는 쉘이 어떤 것인가에 따라 master^{tree} 표현식이 오류를 일으킬 수도 있다. Windows 에서 CMD는 ^ 문자는 이스케이프 기호로 사용한다. ^ 문자를 제대로 사용하려면 git cat-file -p master git-scm.com Git에서는 변경된 파일의 상태를 식별하고, 변경된 내용을 스냅샷의 형태인 커밋에 담아서 기록합니다. 파일에서 어떤 부분을 수정했는지 컴퓨터가 어떻..
mySQL 컨테이너로 JDBC 프로그래밍 (Java) 오늘은 저번에 Docker에서 띄운 mySQL 컨테이너에 연결해서 DB에 데이터를 저장하고 가져오는 간단한 JDBC 프로그래밍을 해보았습니다. JDBC 프로그래밍은 DB에 접근할 수 있도록 해주는 JDBC API를 이용하여 데이터의 추가, 삭제, 수정, 검색 등을 할 수 있는 자바 응용프로그램을 작성하는 것인데요, 한 마디로 mySQL 등의 DB를 사용하는 응용 어플리케이션을 작성하는 것입니다. JDBC에 대해 알아보기 앞서, 데이터베이스와 SQL에 대해서 간단하게 살펴보겠습니다. 데이터베이스 데이터베이스(Database)는 데이터를 저장하고 관리하기 위한 체계적인 방법을 제공하는 시스템입니다. 데이터베이스는 일반적으로 테이블(Table)이라는 구조를 사용하여 데이터를 저장하고, SQL(Structure..