개발

개발/Realworld프로젝트

[23.06.14] 엔티티 작성

클래스 다이어그램 엔티티 다이어그램 ER 다이어그램 Uploaded by N2T(23.06.13 21:40)에 작성된 글 입니다.

개발/스프링

@MappedSuperclass VS @Embedded

의문Realworld 프로젝트를 시작하면서 엔티티 정의와 매핑을 하기 시작했다.모든 테이블에 공통적으로 들어갈 (Id, createdAt, updatedAt)속성은 강의에서 배운대로 BaseEntity로 뽑아내었고 개발 편의성이나 개념적으로도 타당하다고 생각했다.그런데, 프로젝트 API Response format Users와 Profile을 보면 상당부분이 비슷함을 알 수 있다.반환할 때 DTO를 반환할 것이기 때문에 크게 상관이 없긴 하지만, 문제는 엔티티 매핑할 때 발생한다.단위가 더 큰 User클래스를 엔티티로 만들고 사용하려 했지만, 다른 API들에서는 대부분 Profile을 내려주고 있다. 이럴 때는 Profile에 해당하는 클래스를 그냥 하나 만들어주고 User쪽에서 @Embedded로 받는..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

8장. OCI 서버에 프로젝트를 배포해보자.

# OCI서버에 프로젝트 클론뜨기 sudo apt install git git --version mkdir ~/workspace && cd ~/workspace 가장 먼저, git을 설치해준 뒤 workspace 폴더를 만들어준다. git clone {github regository https address} 그리고, 생성한 github 레포지토리에 들어가서 https 주소를 복사하고 git clone 명령어를 통해서 로컬에 다운받는다. cd {프로젝트명} sudo chown +x gradlew ./gradlew test gradlew를 실행하기 위해서는 execute 권한을 주어야한다. gradlew를 통해서 전체 test를 수행해준다. git pull 앞으로 github의 최신 코드를 다시 로컬로 당..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

6~7장. 서버 환경을 만들어보자 - Oracle Cloud Infrastructure

# OCI 장점과 단점 ## 장점 - aws와 달리 평생 무료다. - aws와 달리 인스턴스 여러개를 무료로 제공한다. - 프리티어로 aws보다 훨씬 좋은 성능을 제공한다. ## 단점 - 웹 접근성이 aws에 비해 별로 좋지 않다(회원가입부터 약간 힘들고, 로그인 시 매번 새로고침을 해줘야한다) - aws RDS와 달리 db 엔진을 선택할 수가 없다. => ATP라는 RDS와 비슷한 DB를 제공하지만, DataGrip과 연결이 매우 까다롭다. - ATP는 DB 접근이 3개월간 없을 경우, 영구삭제된다. 이런 단점이 있음에도 불구하고 OCI를 애용하는 이유는 성능이 넘사벽인데다가 aws와 달리 과금걱정이 전혀 없기 때문이다. GitHub - cloudcommunity/Cloud-Free-Tier-Compa..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

5장 스프링 시큐리티와 OAuth2.0으로 로그인 기능 구현하기

# GCP 서비스 등록 ## GCP 애플리케이션 등록 먼저, GCP에 접속하여 프로젝트를 생성한다. API 및 서비스 > OAuth 동의 화면 을 선택한다. 앱 등록을 누르고, 위 화면 처럼 정보들을 입력해준다. 사용자 인증 정보에서 사용자 인증 정보 만들기를 누른 뒤, OAuth 클라이언트 ID를 선택한다. 어플리케이션 유형은 웹 애플리케이션으로, 이름은 적당히 정한 뒤, 승인된 리디렉션 URI를 http://localhost:8080/login/oauth2/code/google로 설정한다. 위 리디렉션 URI는 SpringBoot-Security에서 자동으로 세팅해놓은 URI로, {baseUrl}/{action}/oauth2/code/{regsitrationId}로 정의된다. 현재는 localhost..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

4장 머스테치로 화면 구성하기

# Mustache 추가 및 index.html 추가 Mustache는 JSP처럼 Java코드를 html 상에서 작성하여 동작하는 템플릿 엔진 중 하나다. 대충 템플릿(미리 정의된 문법)에 따라 작성된 Java 코드를 포함하는 html 파일을 문법에 맞게 해석하여 다시 순수 html파일로 만들어주는 엔진이다. 어릴 때 처음 웹 공부할 때 이게 진짜 이해가 잘 안 되고 왜 쓰는지 이해가 안 됐는데, 이젠 뭐.. 당연하게 받아들인다. ## Mustache 설치 더보기 dependencies { implementation 'org.springframework.boot:spring-boot-starter-mustache:3.0.2' } ## index.html 작성 더보기 {{>layout/header}} 스프..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

3장 스프링 부트에서 JPA로 데이터베이스 다뤄보자

# JPA, MYSQL 연결 책에서는 H2 Database를 사용하지만, 이미 MYSQL이 깔려있으므로 굳이 h2를 다시 깔 필요가 없어서 MYSQL을 사용했다. 더보기 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'mysql:mysql-connector-java' build.gradle에 이렇게 추가해준다. 그리고 교재에는 따로 h2 연결 설정을 해주지 않던데... 원래 이래도 되는지는 모르겠으나(김영한님 강좌에서는 h2 설정을 따로 해줬었다), MYSQL은 설정을 해줘야하므로 설정해줬다. 더보기 spring: datasource: driver-class-name: com.mysql.cj.jdb..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

2장 스프링 부트에서 테스트 코드를 작성하자

# 테스트 코드 작성 더보기 package com.thuthi.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 더보기 package com.thuthi.springboot.web; import org.springframework.web.bind.annotation.Ge..

개발/스프링 부트와 AWS로 구축하는 웹 서비스

1장 인텔리제이로 스프링 부트 시작하기

# 시작 JDK 17 Gradle 7.5.1 SpringBoot 3.0.2 버전으로 진행했다. 책은 JDK8(또는 11), Gradle 4버전, SpringBoot 2버전으로 진행하는데, 현재랑 버전차이가 좀 많이 나기 때문에 초기에 어려움이 있더라도 최신버전으로 마이그레이팅하면서 진행하기로 했다. # build.gradle 설정 초기 build.gradle 세팅부터 좀 삐그덕 거리는데, 더보기 buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin") } } plugins { id 'java' id 'eclipse' id 'org.sprin..

개발/Flutter 메모

Flutter BottomNavigationBar 유지하는 방법 총 정리

BottomNavigationBar를 유지하는 거의 모든 방법을 찾아보고 적용해보았다. 대부분의 경우 특정 상황에서 문제가 발생하게되고, 최종적으로 테스트한 모든 상황에서 문제가 발생하지않는 방법을 찾아냈기 때문에 정리해보고자 한다. 1. IndexedStack + Navigator Tab끼리의 상태 유지를 위해 IndexedStack을 사용하고, 하나의 Tab에서 Routing 시 BottomNavigation을 유지하기 위해 Navigator를 사용하는 방법이다. [코드] 더보기 import 'dart:math'; import 'package:flutter/material.dart'; void main() => runApp(const TestApp()); class TestApp extends Sta..

피곤한투티
'개발' 카테고리의 글 목록 (2 Page)