본문 바로가기

개발 일반

(21)
[Java] Java의 정석 (12) 지네릭스 지네릭스 지네릭스란?- 지네릭스 : 다양한 타입의 객체를 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능.- 다룰 객체의 타입을 미리 명시해줌으로써, 번거로운 형변환을 줄여주고 타입 안정성을 높일 수 있다. 지네릭 클래스의 선언1. 선언class Container{ T item; void setItem(T item){ this.item = item; } T getItem(){ return item; }}- 이와 같이 지네릭 클래스로 선언해줌으로써, 이 클래스의 인스턴스를 생성할 때 다룰 객체의 타입을 지정해서 사용할 수 있다. 2. 인스턴스 생성Container container = new Container();c..
[디자인 패턴] MVVM 패턴과 어니언 아키텍처 MVVM 패턴 MVVM 패턴이란?- MVVM (Model-View-ViewModel) 패턴 : 소프트웨어 디자인 패턴 중 하나로, Model, View, ViewModel의 세 가지 구성 요소가 특정한 역할을 수행하고 서로 독립적으로 동작할 수 있도록 설계하는 것을 말한다.- 애플리케이션의 UI 코드와 비즈니스 로직을 분리해 더 깔끔하고 유지보수하기 쉬운 코드를 작성할 수 있도록 도와준다.- WPF, Silverlight와 같은 기술에서 자주 사용된다. MVVM 패턴의 구성 요소Model- 애플리케이션의 데이터 관리 및 데이터 관련 비즈니스 로직을 담당한다.- 데이터베이스와의 상호작용, 데이터 저장 및 처리 등의 작업을 수행한다.View- UI를 담당한다.- XAML 파일로 정의되며, UI 요소들을 포..
[Java] 시간 자료형과 SQL / Nuxt.js와의 연계 java.time 시간 자료형- 날짜나 시간을 표현하는데 쓰는 자료형이다.- java.util.time, java.sql.time 과 같은 패키지들이 있으나, java8 이후에는 java.time 패키지를 쓰는 것이 권장된다. java.time 의 클래스 정리LocalDate날짜만 표현한다. (연, 월, 일)LocalTime시간만 표현한다. (시, 분, 초, 나노초)LocalDateTime날짜와 시간을 모두 표현한다. (연, 월, 일, 시, 분)InstantUTC (국제 표준시)를 기준으로 특정 시점을 표현한다.Duration두 시점 간 시간 차이를 표현한다.Period두 날짜 간 차이를 표현한다. (연, 월, 일)Year연도를 표현한다.Month월을 표현한다.DayOfWeek요일을 표현한다. Lo..
[Nuxt.js & Spring Boot] 비밀 공유 플랫폼 프로젝트 시작! 새 프로젝트 시작 왜 시작하는가 - 회사 IT연수가 끝났다. 연수 최종 프로젝트는 Nuxt.js와 Spring Boot를 이용해 근무 관리 시스템을 만드는 것이었는데, 기본적으로 주어진 기능 조건같은건 간단해서, 기본에 충실해 모두 구현하는 데엔 성공했다.- 하지만 주어진 시간이 너무 짧았고(단 5일!), 필수 기능을 구현하는데 집중하다보니 구현하고 싶었지만 못한 것들이 많았다.- 그리고, 다른 팀들의 결과물을 보면서 배우고 싶은 것이 늘어났고, 아직 비즈니스 매너 연수나 그 이후에도 뭔가 있을 것 같기는 하지만 내가 하고 싶은 것들을 넣어서 프로젝트를 진행하기엔 지금이 가장 적합한 시기라고 생각했다. 건드려보고 싶은 기술들0. 프론트엔드는 Nuxt.js, 백엔드는 Spring Boot로 구현한다. 1..
[Nuxt.js & Spring Boot] 가계부 프로젝트 폐기! 프로젝트 폐기 회사 IT연수가 끝났다.개인 프로젝트로서 이 프로젝트를 진행한 이유는, Nuxt.js와 Spring Boot에 기본적으로 익숙해지기 위함이었는데, 연수 그룹 프로젝트를 통해서 자연스럽게 그 목표가 달성되었다...그래서 이 가계부 프로젝트는 폐기하려고 한다. 그 대신, 연수 프로젝트에서 새로운 과제, 더 공부하고 싶은 것을 발견하게 되었다.1. Spring Security: 비밀번호를 해쉬화하는 과정에서 수박 겉핥기 느낌으로 쓰게 되었는데, 로그인 토큰이나 네트워크 설정 등에도 쓰이기 때문에, 보안 관련돼선 무조건 공부해야한다고 생각했다. 2. 엔티티 클래스와 데이터베이스: 엔티티 클래스의 필드에 쓸 수 있는 어노테이션이 다양하게 있는데도 불구하고, 제대로 활용을 아직 못하고 있다. 그리고 ..
[Nuxt.js & Spring Boot] 가계부 프로젝트 (4) 영수증 추가 기능 & 영수증 삭제 기능 구현 및 조회 기능 수정 영수증 추가 기능 - 백엔드 (Spring Boot) Receipt 관련 클래스- ReceiptController.java 에 메소드 추가// date, place를 전달받아 영수증 데이터를 추가@Operation(summary = "영수증 추가")@PostMapping("/create")Receipt create(@RequestBody Receipt receipt) { return rRepository.save(receipt);}- create는 Request를 통해 date와 place 정보를 받아, 데이터를 추가하는 메소드이다. id는 엔티티 클래스에서 자동으로 지정을 하기 때문에, id 정보는 입력되지 않도록 주의.- delete는 id만 받아서 그 id의 데이터를 제거해준다. Swagger..
[Nuxt.js & Spring Boot] 가계부 프로젝트 (3) 영수증 자세히 보기 기능 구현 영수증 자세히 보기 기능 - 백엔드 (Spring Boot) Product 관련 클래스1. Product.java 수정// 수정 : receipt_id -> receiptId@JsonProperty("receiptId")private int receiptId;- Repository에서 엔티티의 필드값을 찾을 때 CamelCase(단어를 대문자로 구분)으로 찾기 때문에, 필드명을 수정해주었다. 2. ProductRepository.java@RepositoryRestResourcepublic interface ProductRepository extends JpaRepository { // 영수증 ID에 해당하는 물품들을 전체 조회 List findByReceiptId(int receiptId);}- 영..
[Nuxt.js & Spring Boot] 가계부 프로젝트 (2) 지출내역 조회 기능 구현 지출내역 조회 기능 - 백엔드(Spring Boot) 프로젝트 생성 및 세팅- 백엔드는 SpringBoot와 MySQL(Maria DB)로 구현할 생각이다. REST API로 구현하고 json 형식으로 프론트엔드에 데이터를 넘겨주는 식이다.- 기본적으로는 아래 글대로 구현할 생각이다.- [Spring Boot] (4) REST API란?, Swagger UI, REST API를 이용한 데이터 조작 0. 프로젝트 생성- IDE는 Eclipse를 사용하였다.- 프로젝트 생성시 의존성으로는 Rest Repositories, Spring Web, JDBC API 등을 넣어준다.- H2 Database도 넣어줬는데, 테스트할 땐 H2 Database를 쓰고, 나중에 MariaDB로 바꿔줄 생각이다. 1. bu..