일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- web server
- 배포
- Spring
- 웹 서버
- JPA
- 가상화
- CI/CD
- 데이터베이스
- 영속성 컨텍스트
- vm
- 스프링 시큐리티
- computer science
- spring batch
- 백엔드
- 스프링
- HTTP
- Java
- Spring Security
- 컨테이너
- 도커
- 스프링 배치
- spring cloud
- Container
- 자바
- CS
- spring boot
- mysql
- ORM
- virtualization
- 스프링 부트
- Today
- Total
목록스프링 (24)
개발 일기

피우다 프로젝트라는 공모전의 본선에 붙게되어 실제 프로젝트에 적용시키기 전에 멀티 모듈을 왜 쓰는 것이 좋은지에 대해 알아보고자 작성하게됐다. 전에 개인적으로 멀티모듈 프로젝트를 구성해봤는데 그때 느낀점을 바탕으로 작성하고자 한다.느낀점을 가독성을 포기하고 줄글로 쭉 풀어 써보고자 한다.모듈(Module)이란?우선 모듈이 뭔지 짚고 넘어가보자. 바로 독립적으로 운영될 수 있는 의미를 가지는 구성요소 단위 왜 멀티 모듈(Multi-Module)을 도입하는지 장점 살펴보기?우선은 왜 사람들이 멀티 모듈 구조를 선택하려고 하는지 장점에 대해 고민해봤다.사실 처음에는 MSA(마이크로 서비스 아키텍처) 처럼 독립적인 배포가 가능한 것도 아니고 더 복잡해지기만 하는 것만 같고 왜 써야하는지 이해가 안갔다. 그래서 ..

아키텍쳐를 멀티 모듈로 구상하며 하나하나 다시 코드를 뜯어보는 도중에 예외처리한 부분이 좀 아쉽다는 생각이 들어 다시 래퍼런스를 찾아보며 다시 뜯어보기로 했다. 우선 예외처리에 대해서 다시한번 짚고 넘어가보자. 예외처리(Exception Handling)예외처리란, 프로그램 실행 시 발생할 수 있는 얘기치 못한 예외의 발생에 대비한 코드를 작성하는 것이며, 예외처리를 하는 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스러운 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것이다.프로그램 에러- 컴파일 에러 : 컴파일 시에 발생하는 에러- 런타임 에러 : 프로그램 실행 시에 발생하는 에러- 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것자바에서 런타 에러는 에러(E..

스프링과 스프링 부트 차이스프링은행 시스템과 같이 몇 백만, 몇 천만의 사람이 한꺼번에 잔고 조회를 하고, 입금 및 출금 요청을 처리하는 등 많으 유저의 요청을 동시에 처리해야하는 엔터프라이즈 애플리케이션는 성능, 안정성 그리고 보안이 매우 중요해 졌다. 그러나 이러한 것들을 고민하며 비즈니스 로직까지 개발하는 것은 비효율적이였기에 이러한 엔터프라이즈 애플리케이션을 위한 개발 환경을 제공해서 기능 개발에만 집중할 수 있도록 하기 위해 스프링 프레임워크를 제공했고 개발자들은 비즈니스 로직에만 집중할 수 있게 됐다. 스프링 부트그러나 설정이 매우 복잡하다는 단점이 있었고 이러한 단점을 극복하여 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만든 도구가 스프링 부트이다. 빠르게 스프링 프로젝트를 설정할..

평소에 나는 DTO 객체를 생성할때 class가 아닌 record를 통해 선언한다.처음 그렇게 쓰게된 계기는 그냥 구글링 대충하다가 reocrd가 더 낫다는 텍스트만 몇개 보고 그냥 record로 써야지 하고 줄곧 써왔었는데 왜 record가 class보다 더 적합한지 이해가 필요하다고 생각해서 찾아보게 됐다. 우선 DTO가 무엇인지에 대해 먼저 정리해보자DTO(Data Transfer Object)"계층 간에 데이터를 전달하기 위해 사용되는 객체"처음에는 "왜 굳이 번거롭게 DTO라는 객체를 따로 생성해서 데이터를 주고받지?"라는 생각을 했었다. 아래와 같은 이유들로 DTO가 필요하다고 한다. 도메인 보호도메인 로직의 보호: 도메인 객체는 비즈니스 로직과 상태를 포함한다. 도메인 객체를 외부 계층에서 ..

JPA에서의 UPDATE문Spring Data JPA를 적용하게 되면 SELECT 문은 JPA를 사용해 쿼리를 만들 수 있지만 INSERT, UPDATE, DELETE 와 같은 DML을 특정 조건을 곁들여 사용할 경우 쿼리를 직접 작성해야 한다.이 때 쿼리는 JPQL 로 작성하게 된다.@QuerySpring 공식 문서 : '리포지토리 메서드에서 직접 파인더 쿼리를 선언하는 주석입니다.'@Query Annotation은 JPA를 사용하여 UPDATE 문, DELETER 문과 같은 DML을 수행하기 위해 쿼리를 직접 작성해야 할 때 사용한다.위에서 잠깐 언급했듯이 쿼리를 작성할 때 JPQL로 작성해야한다.public interface MemberRepository extends JpaRepository { ..

정리하게된 계기스프링 부트를 쓰게되면서 접근 제어자를 고민할때가 정말 많다. 그러나 사실 정확히 알지 못하고 그냥 때려맞추거나 Best Practice를 무작정 매번 따라 가려고한다. 근데 정확히 왜 이게 주로 이렇게 접근 제어자를 설정하는지 이해하면서 개발을 진행하고 싶고 그러기 위해서는 접근 제어자에 대해서 잘 알고 있어야한다는 판단이 섰다. 그래서 정리해보게 됐다.접근 제어자(Access Modifier)란?자바에서 접근 제어자는 클래스와 클래스의 멤버인 필드, 메소드, 생성자를 생성할 때 외부에서 접근할 수 있는 범위를 제한해주는 장치이다.크게 클래스의 접근 제어자와 클래스 멤버의 접근 제어자 이렇게 두가지로 나누어서 고려해볼 수 있다. 클래스의 접근 제어자클래스를 정의할 때 지정 가능한 접근 ..

평소 롬복을 쓰면 코드가 확연히 줄게 되어 즐겨 사용한다.그러나 사실 그냥 엔티티에서는 @NoArgsConstructor, @Getter, @Builder 쓰고 Controller, service 등에서는@RequiredArgsConstructor를 많이 쓰니까 나도 따라서 그냥 아무생각없이 쓰고 있었다.그러나 이제 스프링 프레임워크에 차츰 익숙해지고 있으니 이러한 것들도 하나씩 잡고 가야되겠다는 생각이 들어 정리해보게 됐다.Entity에서의 Lombok현재 나는 Entity에서 사용 중인 롬복 어노테이션은 아래와 같다.@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@Builder Getter와 Setter를 사용하는 이유객체 지향의 원칙 중 하..

전 게시글에서 Cascade 영속성 전이 그리고 그중에서도 ALL, REMOVE, PERSIST 타입에 대해 집중적으로 이해해봤다.개발하다보면 주로 orphanRemoval=true가 쓰이는 것을 종종 볼 수 있는데 이때 orphanRemoval이 어떤 것을 설정하는 것인지 알아보자.orphanRemoval = true부모 엔티티와 연관관계가 끊어진 자식 엔티티 를 자동으로 삭제해주는 설정이다.Content엔티티에서 Comment와 일대다 관계를 맺을 때 아래와 같이 설정한다고 하자.// Content 엔티티@OneToMany(mappedBy = "content", cascade = CascadeType.ALL, orphanRemoval = true)private List comments = new A..