웹(Web) 67

스프링MVC패턴 Controller / Model(DAO,DTO,Service) / View

단, DTO(=VO)로 혼용해서 많이 사용한다. 상세 비교 : 2022.02.13 - [웹(Web)/백엔드(Backend)] - DTO vs VO 비교 (+Entity) 코드 동작은 아래와 같다. 요약방식으로 적겠다. 상세 내용은 따로 검색해보면서 공부하는 것이 맞는듯하다. 1. Controller(컨트롤러) : 클라이언트 요청 받아서 객체지향방식으로 가공해서 Service에 던져줌 2. Service(서비스) : 적절한 Service에 전달받음 Service : DAO를 묶어 합친 것 -> DAO(Data Access Object)로 DB에 접근 DAO => @Repository DAO는 DB를 사용해 데이터 조회/조작하는 기능 역할을 하는 객체 DAO 사용 이유 : 커넥션 관리 및 보안성 Q1. in..

DTO vs VO 비교 (+Entity)

先 요약 DTO VO Entity 용도 레이어 간 데이터 전달 값 자체 표현 DB 테이블과 매핑되는 클래스 동등 결정 속성값이 모두 같다고 해서 같은 객체 X 속성값이 모두 같으면 같은 객체 O 가변/불변 setter - 존재시:가변 / 비존재시:불변 불변 가변 객체 생성 후 상태 변경 O 로직 getter/setter 외의 로직을 갖지 않음 getter/setter외에도 다른 로직을 가질 수 있다. 로직 포함O 출처 : 우아한테크코스 인비 크루( https://www.youtube.com/watch?v=z5fUkck_RZM ) DTO(Data Transfer Oject) : 데이터를 전달하기 위해 사용하는 객체 : 데이터를 담아서 전달하는 '바구니' getter/setter 메서드만을 갖는다! 다른 로..

mariaDB 설치오류 해결법(MariaDB 10.4 Setup Wizard ended prematurely because of an error)

설치 에러 메시지 : (MariaDB 10.4 Setup Wizard ended prematurely because of an error) 현상 : 설치 진행중에 갑자기 RollBakc되는 현상 발생 인터넷에 나온 레지스트리 등록을 다 따라해봤는데도 안되어서 방법을 연구해보았다. 그래서 mariaDB 설치 중 관리자 권한 확인을 누른 사람이라면 도움이 될 듯 싶다. 필자는 아래와 같은 방법으로 관리자 권한을 부여한 상태로 설치파일을 실행했다. MariaDB 설치오류 해결법 cmd를 관리자 권한으로 실행한다. cmd에서 mariaDB 설치파일(~~~.msi) 버전을 실행한다. 그러면 바탕화면에서 더블클릭했을때와 똑같이 설치를 진행한다. 원래 관리자 요청을 받아야되는데, 이미 cmd를 관리자 권한으로 실행했..

JPA와 SpringData JPA(Repository)

영상 참고 ORM VS SQL Mapper 가) ORM DB Data ← 매핑 → Object 필드 객체를 통해 간접적으로 DB Data를 다룹니다. 객체와 DB의 데이터를 자동으로 매핑해줍니다. SQL 쿼리가 아닌 메서드로 데이터를 조작할 수 있습니다. 객체간 관계를 바탕으로 SQL을 자동으로 생성 합니다. Persistant API라고 할 수 있습니다. JPA, Hibernate 나) SQL Mapper SQL ← 매핑 → Object 필드 SQL 문으로 직접 DB를 조작합니다. 예) Mybatis, jdbcTemplate 위 내용 출처: https://data-make.tistory.com/541 JPA(JAVA Persistence API) 설명 - 영속성 컨텍스트(Persistent Contex..

스프링핵심원리 - 객체 지향 설계 원칙/프레임워크vs라이브러리/IoC/DI

좋은 객체 지향 설계의 원칙 : 여기서 3가지 SRP, DIP, OCP 적용 SRP 단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 한다. 클라이언트 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는 다양한 책임을 가지고 있음 SRP 단일 책임 원칙을 따르면서 관심사를 분리함 구현 객체를 생성하고 연결하는 책임은 AppConfig가 담당 클라이언트 객체는 실행하는 책임만 담당 DIP 의존관계 역전 원칙 : 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 새로운 할인 정책을 개발하고, 적용하려고 하니 클라이언트 코드도 함께 변경해야 했다. 왜냐하면 기존 클라이언트 코드( OrderServiceImpl )는 DIP를 지키며 Disc..

Intellij SpringBoot @Test Junit Run test using 설정

오류는 아래와 같았다. org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7 INFO: 0 containers and 1 tests were Method or class mismatch 테스트 Method를 3개 작성하였는데 3개중 1개만 실행하였을 경우 위와 같은 Info Message 가 발생하네요 테스트 코드를 모두 실행하면 위와 같은 메시지가 발생하지 않습니다. 윈도우 기준 Intellij 설정에서 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 에서 Build and run using과 Run t..

하드코딩하면 안되는이유

https://www.youtube.com/watch?v=VzsXPR25pYw 백엔드 개발자는 아래 두 종류로 나뉜다. 알고리즘+최적화 JSON+I/O(DB설계도 같이 관여) => DB설계를 어떻게 해야되는지..비판적인 시각으로 바라봐보기 자기 PR 못하는사람은 업무일지를 작성해보기. => 어떤 요구, 회의가 오갔는지, 시스템의 주요 개념단위가 어떻게 정리되었는지 등등 내가 백엔드 개발자면, 개념을 정립해서 설계를 주도권을 쥐고 전파해주면 좋다. => FE개발자와 협업할때의 상황을 보자. 기획자에게 계획을 받았으면 설계도부터 그려서 기획자가 의도한 바가 맞는지 요구사항을 확립한다. 그리고 프론트개발자에게 api등을 정리해서 전달해준다. 하드코딩 X, 기획서작성하고 테스트케이스 작성해서 만들어내야함. SI..

[React/Spring Boot/Kotlin] 목록 만들기(배포)

간단하게 프론트/백엔드 정리 참고(더보기) 더보기 FrontEnd => VS 터미널에서 React를 빌드하면된다. 백엔드 없는 프로젝트는 위 빌드파일을 서버에 올리기만하면된다. npm run build BackEnd => Docker에서 AWS에 올리기 : 도커이미지파일 이용 https://inma.tistory.com/148 [SpringBoot] Docker 컨테이너 배포 (with. Gradle) SpringBoot 앱을 개발환경(Development/Production)을 나누어 배포하는 방법에 대해 알아봅니다 🤩 (본 포스팅에서는 SpringBoot + Gradle + Docker를 사용합니다.) 1. Spring Initializr에서 dependency로 Sprin.. inma.tistory..