반응형 Project80 [소경관] : JPA와 builder 패턴을 사용한 회원 가입 및 Id, Email 중복 체크 로직 코딩하기 📌 검증 기능은 아직 구현하지 못 했기 때문에 회원 가입과 ID, Email 중복 체크를 중점으로 보면 된다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "USER_INFO") @ToString public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long userNo; @Column(name = "USER_NAME", length = 20) private String userName; @Column(name = "USER_PN", length = 40) private String userPn; @.. 2022. 4. 14. [소경관] : builder에 값을 넣는 다른 방법 이것 저것 테스트를 해 보고 있다. Builder에 request.getParameter를 통해 값을 담았는데 View에서 th:object를 통해 값을 받아온 DTO에서 꺼내어 담아도 값이 들어간다. 이름 A name is required. th:object="${userSaveForm}" userSaveForm으로 값을 받는다. @PostMapping("/user/regUser/insert") public String InsertRegUser(@Validated Model model, HttpServletRequest request, UserSaveForm userSaveForm, UserSaveForm을 파라미터로 받는다. log.info("DTO 값을 Entity에 넣기 = {}", UserEnt.. 2022. 4. 13. [소경관] : @Entity를 @Setter없이 View에서 Controller로 값을 받아와 @Builder를 통해 DB에 넣기 Entity를 Setter없이 View에서 Controller로 값 받아와 @Builder를 통해DB에 넣기 며칠 헤매다 드디어 성공했다. 내가 너무 어렵게 생각하고 있었다. View에서 값을 받아 Controller에 넘겨주고 Controller에서 View에서 받아 온 값을 Entity에 담아 Service에 넘긴다. Service는 받은 값을 JpaRepository를 상속 받은 interface UserRepository에 저장한다. @Builder를 사용해 View에서 값을 받아 DB에 저장하기 매개 변수가 더 있지만 몇 가지로 간추려 작성해 본다. @PostMapping("/user/regUser/insert") public String InsertRegUser(HttpServletReques.. 2022. 4. 12. [소경관] : 지옥의 Builder Entity와 DTO를 아직 해결하지 못 했다. 사실 Entity에 Setter를 박아버리면.. 이렇게 고민 할 필요도 없지만 지금은 탐구하면서 하고 있기에 머리가 아프다. 일단 데이터 쿼리문을 날리는 것 까지는 성공했다. 그럼 어디가 문제? Entity와 DTO를 modelMapper를 통해 변환을 해야 하는지 builder로 dto를 세팅하던지 반대로 dto에서 Entity를 세팅하던지.. 위 것들을 고민하고 있다. 그 외, 일단 위에 문제를 선택하거나 고치지 못 한 상태라 값을 전달하지 못 하고 있다. 시퀸스 값은 정상적으로 올라가는데 데이터에 null이 들어가고 있다. 위에서 DTO와 Entity를 어떻게 잘 섞어 쓸지 해결하면 문제가 없을 것 같은데 일단 강의를 빨리 더 들어야 하는지 잘 모르겠.. 2022. 4. 11. [소경관] : 새벽에 공부한 내용 체크와 리프레쉬 헷갈리는 것 회원가입을 위해 필요한 템플릿이 총 2개? 화면을 띄워주는 경로 로직 처리하는 경로?.. Mapper 대신 Repository? @Autowired 대신에 @RequiredArgsConstructor 사용?.. @PostMapping("/regUser") public String regUser() throws Exception{ UserDTO userDTO = null; userDTO.setUserId("userName"); userDTO.setUserPn("userPn"); userDTO.setUserEmail("userEmail"); userDTO.setUserId("userId"); userDTO.setUserPw("userPw"); userDTO.setUserAddr("userAddr.. 2022. 4. 10. [소경관] : 프로젝트에 적용하기 위해 JPA Builder, Entity 사용 공부 중 회원가입 로직을 짜려고 했는데 시작부터 바로 막혔다. JPA를 사용해 본 적이 없기도 하고 Entity를 사용해 본 적이 없기도 해서 막혔다. 오늘 스터디부터 쭉 찾아보면서 알아낸 것을 간단히 정리해 본다. 지금까지 캐치한 것 JPA를 처음 사용해 보면서 DTO대신 Entity를 사용했는데 Entity 사용법이 어렵다. 먼저, Entity는 일관성을 보장하기 위해 Setter를 사용하면 안 된다. 때문에 따로 생성자를 만들거나 Builder를 사용해야 한다. 또, Entity를 DTO로 매핑하여 사용하는 방법도 있는 것 같다. Builder를 만들 수 있지만 @Builder 어노테이션을 활용해 쉽게 만들 수도 있는 것 같다. 문제 캐치한 것에 대한 확신이 없다. 왜? → 구현을 해 본 적이 없어서. 나는.. 2022. 4. 9. [소경관] : 프로젝트 패키지 구조 고민 및 Entity와 DTO의 분리 프로젝트 패키지 구조 고민 학교에서 사용하던 패키지 구조 Controller Service IService Mapper IMapper DTO 프로젝트 패키지 구조를 저번에 공부했을 때(🔗 ← Click! 참고) 작은 단위에서 크게 확장할 수 있는 구조로 짜는 게 중요하다고 했는데 사실 내가 경험이 많지 않아서 어떻게 해야 할 지 감이 안 잡힌다. 다만 위와 같은 구조에서 Entity를 DTO와 나누어 새로 만들어 주었다. Entity와 DTO의 차이? Entity는 실제 테이블과 매핑이 된다. Setter를 사용하지 않는 게 좋다. 왜? 객체 값을 쉽게 변경할 수 있게 되면 일관성을 유지하기 어려워진다. 일관성을 잃으면 유지 보수가 어려워진다. 그럼 어떻게? Setter 대신에 생성자를 생성해 준다. 더.. 2022. 4. 8. [소경관] : 다시 AWS EC2 Ubuntu에 MongoDB, MariaDB 세팅 후 연동 및 JPA 테이블 자동 생성 완성 오늘은 일단 AWS EC2 Ubuntu MongoDB, MariaDB를 셋팅하고 JPA에 DTO를 생성해 자동 테이블 생성까지 마쳤다. Server에 DB를 다시 만들어 볼까? MariaDB와 MongoDB를 Server에 안 올릴 수는 없으니 미리 만들어 봤다. 이미 충분한 테스트와 시도를 거쳤기 때문에 뚝딱 만들 수 있을 줄 알았다.. 익숙해도 색다른 오류가 터진다.. 이번에는 GUI의 도움을 받지 않고 전부 다 코드로 셋팅했다. MariaDB 셋팅 sudo apt-gat update $ sudo apt-get install software-properties-common $ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_sig.. 2022. 4. 7. [소경관] : 로컬 데이터베이스 설정 및 프론트 마저 진행하기 AWS에서 하다가 요금이 자꾸 나와서 일단 로컬에 하기로 했다. 이 외에도 깔끔하게 남기기 위해 로컬에 하기로 했다. Thymeleaf 사용 배운 타임리프 문법을 사용하기 시작했다. 이렇게 href 경로도 걸어줘보고 회원가입 이렇게 onclick도 사용해 봤다. 앞으로 천천히 따로 공부한 내용을 이렇게 적용해 보면서 프로젝트를 완성시킬 예정이다. 소경관 로그인 화면 다듬기 로그인 부분 데이터 넘겨주는 작업을 나중에 해야하고 아래 카피라이터 부분도 수정해 줘야 한다. 백그라운드 이미지도 새로 넣어줘야하고.. 회원가입이랑 비밀번호 찾기 페이지도 다듬어야 한다. mariaDB 설정하기 sudo apt-gat update $ sudo apt-get install software-properties-common .. 2022. 4. 4. [소경관] : 프론트 뼈대 잡기와 Jenkins 재도전 하기 오늘의 목표 큰 페이지들 연동 다 하고 진입까지 완료하기 작은 페이지들 생성해 두기 CI/CD 적용 다시 시도해 보기 문제 발생 시 체크해 두기 큰 메뉴 완성하기 내가 계획하고 있는 프로젝트의 메뉴는 이런 식이다. 로그인 페이지를 기본으로 로그인 후 입장이 가능하고 메인 페이지에서 세부 큰 페이지로 나눠지고 그 큰 페이지에서 작은 페이지로 나눠진다. 오늘은 큰 페이지를 만들었다. 이게 지금 로그인 후 들어오는 메인 페이지인데 이 메인 페이지에는 사용 설명을 간단하게 올릴 예정이다. 아직 수정하지는 않았다. 프로젝트 네임을 적어두고 홈으로 이동할 수 있는 링크를 걸어뒀다. 큰 메뉴들이다 큰 메뉴 선택시 이동이 가능하다. 나중에 빨리 완성되면 이동된 탭의 이름에 효과를 주는 것도 고려중이다.(밋밋하다는 생각.. 2022. 4. 2. [소경관] : Jenkins 맛 보고 후퇴.. & BootStrap Spring Boot thymeleaf에 적용하기 오늘 목표 Jenkins 설치 및 환경 셋팅 가능하면 Git까지 연동 후 테스트 페이지 띄우고, 수정하고 재적용 확인까지 해보기 어떻게 할까? Jenkins 공식 문서 참고한다. 오류가 난다면? 사례를 구글링해서 찾아보자. AWS EC2 Ubuntu에 Jenkins 설치 및 셋팅하기 먼저 Jenkins를 실행하려면 Java가 있어야 한다. Java를 먼저 설치해 주자. $ sudo apt update $ sudo apt install openjdk-11-jre $ java -version Debian apt 레포지토리를 업이트하고 Java를 설치한다. 설치가 잘 되었는지 체크를 해준다. curl -fsSL | sudo tee \\ /usr/share/keyrings/jenkins-keyring.asc >.. 2022. 4. 1. [소경관] : 프로젝트 진짜 시작 ! DB구축과 연동 그리고 CI/CD 고민.. 오늘 학교에서 개발 설계 산출물을 가지고 프로젝트 발표를 잘 마쳤다. 교수님이 “기능은 충분한데 너는 더 할 수 있을 것 같은데 더 넣으면 안되나?”라는 식으로 말씀하셨고..나는 일단 지금 있는 기능이나 똑바로 잘 하고 싶어서 최대한 거절했다.. 변경 사항에 대해서.. 교수님이 도커는 이제 쿠버네티스에서 지원을 안 해서 별로인 것 같다고 빼라고 하셨고 도커가 빠지게 되었다. 그래도 최근에 공부한 내용인데 아쉽긴 하다. 쿠버네티스만 사용하는 것은 아직 익숙하지 않기 때문에..(도커도 마찬가지긴 하지만..)어려울 것 같다. 혼자 공부한새로 배운 다른 기술도 많이 적용하려 한다. JPA, Gradle, CI/CD, Thymeleaf 등등.. 이것들도 프로젝트에 적용은 처음인데 쿠버네티스까지 하면 시간을 못 맞.. 2022. 3. 31. [소경관] : 개발 설계 산출물 완성 및 제출 개발 설계 산출물 완성 ! 설계 산출물을 드디어 완성했다. 메뉴 구조도에 대한 설명을 추가했고 다른 페이지도 마찬가지로 화면 아이디를 메인으로 쭉쭉 사용해 보는 느낌으로 작성했다. 일단 완성된 화면설계서와 산출물을 제출했고 내일 발표가 있다. 발표 후 피드백을 다시 받고 문제가 없다면 실 개발 스타트가 될 예정이다. ERD가 줄었다? 그 전에 복잡하게 구상하고 있던 ERD를 줄였다. 대부분의 데이터를 MongoDB로 구현하려고 했기 때문에 간단한 회원 정보만 입력하고(사실 회원 가입이 없어도 되지만.. 구현 경험을 위해 일단 넣었다. 나중에 다른 방향으로 사용해도 되고..)넘어간다. https://ohju96.notion.site/e76cef85fe82425cac4b4e754b6e308c 개발 설계 산출.. 2022. 3. 30. [소경관] : 화면 설계서 마무리 단계에 돌입했다. - 발표를 한다고 해서 표지를 준비했다. 가능하면 이쁘게 하는 게 좋긴 하지만 차라리 잘 못 꾸밀 거라면 깔끔하게 하는 게 좋을 것 같다. 원래 튜닝의 끝은 순정이라고 하지 않던가.. 간단하게 학우들에게 내 프로젝트에 대해 설명하기 위해 간단한 안내 멘트들을 적어봤다. 당장 오는 목요일에 발표하는데 연습도 좀 하고 스터디를 통해 한 발표 연습이 도움이 되고 있길 바란다. 사실 긴장감이 전에 발표한다고 마음 먹었을 때 보다 훨씬 줄어든 것을 체감하고 있다. 화면 설계서에 디자인은 들어가지 않았다. 레이아웃이라고 해야 하나. 전체적으로 어떻게 어떤 기능을 배치할지에 대해 생각하고 만들고 있다. 딱 이 모양대로 만드는 게 아니라 이런 구조, 이런 배치를 생각중이다. 정도를 전달할 수 있을 것 같다. 이단 메뉴.. 2022. 3. 29. [소경관] : 아직도 개발 설계 산출물 작성 중 .. 곧 완료 예정.. 개발 설계 산출물 중 제일 어려운 부분은? 화면 설계서는 페이지가 많아서 어렵다. 지금 제일 어려운 부분은 데이터 베이스를 어떻게 설계할지.. 당장 수요일까지 완료해야 하는데 아직 완료하지 못 했다. 개발 설계 산출믈은 이번주 수요일에 제출해야 하기 때문에 어떻게든 빨리 작성해야한다. 떠오르는 부분은 있기 때문에 마음 놓고 있긴 한데 내일은 이제 그만 생각하고 어느 적도 적용하면서 수정해 나가야한다. JPA? MongoDB? JPA와 MongoDB를 사용해 보고 싶은데 같이 공부하는 동기가 같은 프로젝트에서 적용했을 때 동작이 잘 안 되더라..라는 말을 해서 알아보고 있다. MSA... Microservice Architecture라는 것을 사용해 보고 싶은데 아직 정보가 부족하다. MSA로 만들어진 프.. 2022. 3. 28. [소경관] : 화면 설계서 작성과 엑셀을 어떻게 JSON으로 가져올지에 대해.. 어떻게 작성하나? 화면 설계서를 어떻게 작성할까 고민을 많이 하고 있었다. 진짜 내가 개발 할 프론트 레이아웃을 적용해서 해야 하는지,? 혹은 템플릿 수준으로만 만들어 둘지에 대해 고민하고 있었다. 설명을 위한 템플릿은 이렇게 표로 간단하게 구성했고 일단 로그인을 위한 페이지를 간단하게 만들고 있다. 아무래도 디자인은 적용되지 않은 모습으로 만들어 볼 예정이다. 채색을 하기 전 스케치 버전으로 생각하면 된다. 테이블 명세서와 ERD 작성은 어디갔나? 테이블과 ERD에 대한 고민이 있다. 먼저, MariaDB와 MongoDB를 사용할 예정인다. 사용자(경비원) 정보는 RDB로, 차량에 대한 정보(차량주인, 전화번호, 주소, 차량번호)는 엑셀로 받아서 JSON으로 MognoDB에 저장하는 것을 생각중이긴 한.. 2022. 3. 26. [소경관] : 개발 설계 산출물 작성(2) 개발 설계 산출물 작성기.. 아이디어 체크 ! 교수님에게 아이디어 체크를 받았다. → “아, 그러면 자동차 번호판을 인식하는 이미지 인식을 넣으면 될까요?”→ “네, 알겠습니다.” → “그 정도는 되도 생각해 볼까, 말까인데 일단 해 봐.” → “기능이 부족하다, 거의 게시판이잖아” 간단한 대화를 통해 기능 부족 판정을 받고 기능을 추가했다. 기능 추가 번호판 이미지 인식 엑셀 파일을 불러와 차량 정보 등록 이렇게 두 가지 기능을 넣기로 했다. 개발 설계 산출물 다시 작성!? 기능이 바뀌면서 어제 조금 작성한 메뉴구조도, 프로그램명세서가 바뀌었다. 메뉴구조도, 프로그램명세서, WBS를 작성했다. 기능을 추가하고 기능 이름을 살짝 정비했다. 기간은 일단 임의로 작성해 두긴 했는데 하면서 수정을 거쳐야 할 .. 2022. 3. 24. [소경관] : 개발 설계 산출물 작성(1) 이 전의 소경관에 대한 기록은 혼자 공부하면서 정리해 둔 것에 불과하지만 이제는 진짜 해야 할 때가 왔다. 오늘은 개발하기 앞서 개발 설계 산출물을 먼저 작성했는데 완성하지도 못 했고 아직 작성하지 못 한 서류도 있다. 메뉴구조도와 프로그램명세서를 작성했다. 메뉴 구조도에는 메뉴에 어떤 탭이 들어갈지 생각하면서 적었는데 아직 디테일하진 않다. 프로그램 명세서는 메뉴 구조를 참고해서 적었다. 나중에 화면 설계서 작성을 위해 프로그램ID를 설정하고 어떤 DB Transaction을 수행하는지 간단히 체크했다. 업그레이드를 통해 추후에 조금 더 뚜렷하게 구체화 작업이 필요할 것 같다. 메뉴 구조도에는 메뉴에 어떤 탭이 들어갈지 생각하면서 적었는데 아직 디테일하진 않다. 프로그램 명세서는 메뉴 구조를 참고해서 .. 2022. 3. 23. [소경관] : 프로젝트 요구사항 완전 변경 및 재시작 학교에서 개인 프로젝트 과제로 만들려고 생각해 두다 방학 때 진행하려 했으나 요구사항이 자꾸 바뀌어 진행하지 못 했었다. 이제 개강하고 과제의 최종 요구사항이 결정되어 앞으로 몇 가지의 수정 작업을 진행하고 개발 설계 산출물부터 천천히 작성하고 깃 레포지토리도 비우고 다시 시작해야 한다. 처음에 스프링 프레임워크 레거시버전으로 만든다 했었으나 교육 과정 개편(?)으로 스프링 부트로 만들게 되었다. 기존에 메이븐 사용도 그레이들로 바꿔서 적용할까도 생각중이고.. 아직 개발 설계 산출물이 작성되지 않은 만큼 뚜렷하지 못 한 상태이다. 3월 말 까지 설계 산출물을 제출해야 하니까 그 전에 구상은 마칠 예정이다. 2022. 3. 17. [소경관] : Flask를 통한 Pandas 라이브러리 데이터 분석 활용 Flask를 통한 Pandas 라이브러리 데이터 분석 활용 from flask import Flask app = Flask(__name__, static_url_path='/resource') @app.route("/test") def spring (): return "Flask Server" @app.route("/data") def data(): import pandas as pd import numpy as np m_store = pd.read_csv('C:\git\Parking_management_Project\Flask_data\source\주현아파트.csv') m_store.loc[m_store['차량 수'] == "", '설명'] = '차량 수 등록이 안 되어 있습니다.' m_store.lo.. 2021. 12. 28. [소경관] : Flask Server 구현 소경관 프로젝트를 생각하면서 굳이 사용이 필요가 없더라고 배운 머신러닝을 활용해 적용하고 싶었다. 그래서 생각한게스프링 프레임워크에서 .csv 파일을 받고 그것을 플라스크 서버를 통해 파이썬 프로젝트로 넘겨준 뒤 파이썬 프로젝트에서 머신러닝을 통해 (굳이 필요하지 않을 수도 있는)데이터 가공을 하고 데이터를 가공한 것을 다시 플라스크 서버를 통해 스프링 프레임워크로 넘겨줘서 활용할 수 있는 방법이다. 아직 내가 이것을 제대로 구현해 본 적이 없어서 가능한 일인지 모르겠지만 시작했고 우선 플라스크 서버먼저 구현했다. from flask import Flask app = Flask(__name__) @app.route("/") def spring (): return "Flask Server" if __nam.. 2021. 12. 27. 이전 1 2 3 4 다음 반응형