본문 바로가기
728x90

전체 글259

[Spring Boot] Lombok Lombok 사용 이유 Spring Project를 진행하다보면, 여러 DTO 등 데이터를 다루기 위한 여러 객체를 생성하고 사용을 하게 되는데, 그럴때마다 getter 와 setter, constructor 등을 타이핑하는 것은 상당히 지루하고 귀찮은 작업이다. 이러한 귀찮음을 줄이기 위해 Lombok annotation을 사용하는 것이다. Lombok을 사용하면 Getter, Setter 등 위에서 언급한 귀찮은 작업들을 대신해주기 때문에 매우 편리하고 코드의 작성 시간 또한 줄어드는 것이다. Lombok 설치 Intellij IDE에서 Spring Project를 생성할 때, dependency를 추가하는 단계에서 Lombok을 추가하여도 되지만 만약 실수로 추가하지 않았다면 build.gradle.. 2024. 1. 11.
Entity 개념 & 기본 사용법 @Entity ORM(Object-Relational Mapping)은 자바의 객체와 데이터베이스의 데이터를 Mapping 해주는 개념이다. 비영속성인 자바의 객체를 ORM을 통해 DB에 자동으로 매핑을 해주어 영속화시켜줌으로써, 자바의 객체만으로도 데이터 베이스의 데이터를 다룰 수 있게 되는 것이다. 이 때에, DB와 Mapping이 되는 자바 객체를 Entity라고 한다. JPA는 이러한 Entity를 이용하여 Table을 생성하기 때문에 자바 객체가 Entity임을 알려주어야 하는데, 그를 위한 annotation이 @Entity이다. @Data @NoArgsConstructor @Entity public class Student { } 위와 같이 자바의 클래스 위에 @Entity를 붙여주면 해당 .. 2024. 1. 11.
[Git] branch workflow Git의 branch는 개발을 하는데에 있어서 매우 유용한 도구이다. 이런 도구를 어떻게 활용을 해야 git branch 가 개발자들에게 주는 여러 혜택들을 온전히 누릴 수 있을까? 이번 글에서는 git branch를 활용하기 위한 몇 가지 workflow 에 대해 살펴보자. Long-Running branch Git의 branch의 장점은 가볍다는 점이다. 이러한 장점을 가질 수 있었던 이유 중 하나는 merge를 할 때의 3-way merge 방식은 안정성이 있기 때문이다. 그렇기 때문에 오랜시간에 걸쳐 하나의 branch와 다른 branch를 여러번 merge 하는 것이 쉬운 편이다. 그렇기 때문에 필요할 때마다 branch를 생성하고 계속 사용하면서 정기적으로 merge를 진행해준다. 이러한 방식.. 2024. 1. 9.
[Git] branch 관리 지금까지 branch, merge, conflict의 기초에 대해서 알아보았는데, branch에 대해 더 깊게 다루기 전에 먼저 가볍게 branch를 관리하기 위한 간단한 명렁어들을 알아보겠다. git branch -v git branch는 아무런 옵션없이 실행하게 되면 현재 branch의 목록을 보여준다. user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master) $ git branch * master ralro 이 때 branch 옆에 * 기호가 붙은 branch는 현재 HEAD가 가리키고 있는 branch, 즉 checkout 되어있음을 의미한다. 여기서 -v 옵션을 주게 되면 위의 목록에서 해당 branch의 커밋 개체의 SHA-1 해시 키와 함께 마지막 커밋 .. 2024. 1. 9.
[Spring Boot] Controller @Controller Controller는 MVC 구조에서 비즈니스 로직을 담당하는 Model과 클라이언트에 화면을 보여주는 View를 연결해주는 역할을 담당한다. 이 때, client의 요청에 따라 적절한 model을 호출하고 그 결과와 함께 view를 반환하여 준다. Spring MVC에선, 클래스에 @Controller annotation을 통해 controller를 생성할 수 있다. 해당 annotation을 붙이게 되면 Spring에선 해당 클래스를 Controller 역할을 하는 Bean 객체로 생성한다. @RequestMapping 이제 Controller 생성하였으니 해당 클래스 내에서 관련 요청(request)를 처리하는 메소드들을 정의해주어야 하는데 이러한 메소드를 handler라고 한.. 2024. 1. 8.
[Spring Boot] 게시판 목록 페이지 Spring MVC에 대해서 알아보았으니 이를 활용하여 게시판의 목록 페이지를 만들면서 직접 Spring Boot를 사용해보겠다. IDE로는 Intellij ultimate을 사용하였고 View를 생성하기 위한 Template Engine으로는 Thymeleaf를 사용하였다. DB 생성 간단한 게시판을 만들기 위해서 필요한 테이블은 하나만 있어도 된다. 후에 파일 첨부, 로그인 등 부가 기능이 추가된다면 테이블이 여러개 필요하지만 간단한 게시판을 만들기 위해서는 Board Table 하나만 생성하겠다. CREATE TABLE board ( id int PRIMARY KEY AUTO_INCREMENT, title varchar(100) NOT NULL, content text NOT NULL, viewCn.. 2024. 1. 8.
[Spring Boot] MVC pattern Spring Boot를 공부하기 위해서 가장 기초적인 게시판을 하나 만들어보면서 Spring Boot의 동작 방식과 구조, 사용방법 등을 자세히 알아보겠다. 먼저, 게시판을 만들기 전에, Spring의 MVC pattern 에 대해서 다루어보겠다. Model & View MVC pattern에서 Model은 데이터를 다루는 비즈니스 로직을 담당한다. 이 외에도 여러개의 데이터 변경 작업을 하나의 작업으로 묶는 transaction을 다루는 일도 한다. 주로 spring 프로젝트에서 DAO ( Data Access Object ) , Sevice 클래스에 해당한다. View 는 model이 처리한 데이터나 그 결과를 가지고 사용자에게 출력할 ( 서버가 응답할 ) 화면을 만드는 작업을 담당한다. view가 .. 2024. 1. 8.
[Git] Conflict 기초 Conflict 처음 branch를 다루고 merge를 하다보면, conflict 오류가 발생하면서 merge 가 실패했다는 메세지를 자주 접하게 된다. fast forward 방식보다 3-way merge 방식에서 conflict가 발생하는데 그 이유는 2개의 branch에서 같은 파일의 똑같은 부분을 동시에 수정하고 merge를 시도하였기 때문이다. Git은 이러한 경우의 merge 하지 못하고 아래와 같은 conflict 메시지를 출력한다. user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master) $ git branch ralro user@DESKTOP-UCJOAKJ MINGW64 /d/git/example (master) $ echo "master branch.. 2024. 1. 8.
JPA 란 JPA란 Java Persistence API의 약자로써, 자바 진영에서 ORM 기술의 표준으로 채택하고 있는 인터페이스의 모음이다. 본격적으로 JPA 가 무엇인지에 대해서 알아보기 전에 먼저 JPA의 이름안에 들어가 있는 Persistence 가 무엇인지에 대해 먼저 알아야 한다. Persistence Persistence는 영속성으로서, 데이터를 생성한 프로그램이 종료되더라도 '사라지지 않는' 데이터의 특성을 의미한다. 어떻게 프로그램의 메모리 상에 존재하는 데이터가 종료되도 사라지지 않을 수 있을까?? 그 이유로는 메모리 상에 존재하는 데이터를 데이터베이스 등을 활용하여 데이터를 보관하고 관리할 수 있는 서버에 따로 저장하기 때문이다. 대표적으로 MySQL, MariaDB 등 여러 데이터 베이스 시.. 2024. 1. 5.
[Git] Merge 기초 branch를 생성하고 이동시키는 방법에 대해서 공부하였으니 이제는 branch를 합치는 작업인 merge에 대해서 공부해보자. merge에 대해서 본격적으로 공부하기 위해서 하나의 시나리오를 통해 merge의 기초에 대해서 먼저 공부해보자. merge 기초 먼저 시나리오를 살펴보자. 현재 배포 중인 웹 사이트가 있다. ( master branch ) 새로운 이슈를 처리하기 위한 branch를 생성 새로 만든 branch에서 작업을 진행하는 중 급하게 처리해야 할 버그 발생 작업을 중단하고 이전의 운영 브랜치(master) 로 이동 버그 해결을 위한 브랜치 생성 버그 해결 후 해당 브랜치를 운영 브랜치로 merge 다시 이슈 해결을 위한 브랜치로 이동 후 작업 진행 해당 시나리오대로 실제로 진행해보면서 .. 2024. 1. 4.
[Git] checkout git checkout 이전 글에서 branch를 생성하는 법에 대해서 알아보았으니 이제 branch 사이를 이동하는 법에 대해서 알아보자. branch를 이동하기 위해서는 git checkout 명렁어를 사용해야 한다. git checkout [branch 명] 해당 명렁어 뒤에 이동을 원하는 branch 명을 작성하면 해당 branch로 이동하게 된다. 이 때 해당 branch로 이동한다고 하는 표현의 대상은 누구일까? 바로 현재 branch를 가리키는 포인터인 HEAD이다. git checkout 을 통해 branch를 변경하게 되면, HEAD가 가리키는 branch가 다른 branch로 이동하게 되는 것이다. 이제 실제로 사용해보자. user@DESKTOP-UCJOAKJ MINGW64 /d/git.. 2024. 1. 3.
[토비의 스프링] Singleton Registry에 대한 이해 이전 글에서 @Configuration annotation을 사용하여 application context를 사용해보았는데, 이번 글에서는 그 이전에 userDaoFactory를 직접 사용했던 방법과 application context를 사용했던 방식의 차이점을 알아보면서 이를 통해 무엇을 알 수 있는지에 대해 공부하여 보겠다. UserDaoFactory VS Application Context 두 가지 방식은 테스트 결과만 보면 동일하지만, 파고들어보면 중요한 차이점이 있다. 이를 알아보기 위해서, 먼저 UserDaoFactory를 직접 사용했던 방식으로 userDAO 객체를 두 개를 생성해보자. public static void main(String[] args) { UserDaoFactory fact.. 2024. 1. 2.
728x90
반응형