일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- db
- AnimationController
- HTML
- Maui
- Flutter
- MSSQL
- spring boot
- page
- 파이어베이스
- Binding
- .NET
- 오류
- 바인딩
- typescript
- 애니메이션
- 깃허브
- 마우이
- 함수
- JavaScript
- 자바스크립트
- React JS
- 플러터
- GitHub
- Animation
- 리엑트
- MVVM
- Firebase
- 닷넷
- listview
- MS-SQL
- Today
- Total
목록2024/04 (19)
개발노트
Infinite recursion (무한 재귀) 무한 재귀, 이 오류는 객체 간에 서로 참조가 발생하여 끊임없이 서로를 호출하고 있기 때문에 발생합니다.가장 흔한 이유는 Hibernate의 엔티티에 양방향 참조가 있을 때 발생합니다. 예를 들어, 두 개의 엔티티가 서로를 참조하고 있고 이 참조가 순환적으로 연결되어 있으면 무한 재귀가 발생할 수 있습니다.이 문제를 해결하려면 다음과 같은 방법을 고려해 보세요:@JsonIgnore 애너테이션 사용: 엔티티 클래스의 일부 필드에 @JsonIgnore 애너테이션을 사용하여 해당 필드가 직렬화되지 않도록 만듭니다. 이 방법은 무한 재귀를 방지하는데 유용합니다.@JsonIgnore private MixType mixType;@JsonManagedReference..
Java 에서 "_" 언더바 사용은 아래와 같은 문제를 불러옵니다.Naming Conventions: Java의 명명 규칙(Naming Conventions)은 카멜 표기법(Camel Case)을 따릅니다. 즉, 변수 이름은 소문자로 시작하고, 여러 단어가 결합될 때는 각 단어의 첫 글자를 대문자로 표기합니다. 이러한 명명 규칙을 따르지 않으면 코드의 가독성이 떨어지고, 표준에 맞지 않는 코드로 인식될 수 있습니다.키워드와의 충돌: 언더바(_)는 Java에서 특별한 용도로 사용되는 문자가 아니기 때문에 문법적으로는 문제가 없지만, 키워드와의 충돌이 발생할 수 있습니다. 예를 들어, 변수 이름으로 **int _value;**와 같이 언더바를 사용하면 일부 상황에서 코드를 해석하는 데 혼란을 줄 수 있습니다..
application.yml 적용순서프로젝트 구조 확인: 먼저 Spring Boot 프로젝트의 구조를 확인하세요. src/main/resources 디렉터리 내에 application.yml 파일을 위치시켜야 합니다.애플리케이션 실행 시 로드: Spring Boot 애플리케이션을 실행할 때 application.yml 파일이 자동으로 로드됩니다. 이 파일에 정의된 설정은 애플리케이션에 적용됩니다.프로파일 설정: application.yml 파일은 여러 프로파일에 따라 설정을 구성할 수 있습니다. 예를 들어, application-dev.yml 또는 **application-prod.yml**과 같이 환경에 따라 다른 설정을 제공할 수 있습니다. 애플리케이션 실행 시 프로파일을 지정하여 해당 프로파일에 따..
API 서버 http 통신에 riverpod을 이용하여 상태관리 하도록 만들어 보겠습니다.이번 시간에는 AsyncNotifierProvider와 http의 GET, POST, DELETE (CRUD) 를 같이 사용하여 어떻게 상태관리 할 수 있는지 포스팅 해보겠습니다.JPA의 save() 메소드로 upsert가 가능하기 때문에 update 즉, PUT는 생략하겠습니다.[구현할 기능 시나리오]1. 재료 리스트 화면으로 네이게이션되었을 때 findAll() 로 모든 재료를 받아 ListView의 ListTile에 맵핑합니다.2. 재료가 담긴 ListTile 을 클릭했을 때 해당 재료의 식별ID로 조회하여 하단 시트가 올라오며, 시트에 정보를 가져옵니다.3. ListTile 클릭으로 Bottom..
DB - API Server - Client App (MySQL - Spring Boot - Flutter) 연동완료.! 우선 3가지의 연동을 직접 작성하고 눈으로 확인하며, Client Application이 서비스되는 흐름을 조금 더 선명하게 볼 수 있게 되었다. 아직 CI/CD는 구축하지않았지만 앱 완성도를 높이는 것에 집중하고 그다음에 하는 것을 목표로 해야겠다. 이제부터가 내가 생각한 아이디어를 앱에 그려보는 시간이 될 것이라고 생각된다. 필요한 화면을 Flutter로 만들고, 만든 화면에 필요한 데이터를 Spring Boot Conttroller에 추가하며 호출하고, 추가적으로 필요한 데이터가 생기면 칼럼, 테이블 수정,추가 등 MySQL로 관리하면 되겠다. 앞으로 할일 API 서버 보안을 위..
JPA를 이용하여 삽입, 조회, 수정, 삭제 등 API 호출 기능을 만들어 보겠습니다. 여기에 ResponsEntity를 이용하여 http 상태코드에 따른 응답도 만들어봅니다. 만들어볼 기능들 예시로 사용될 Ingredient 모델과 리포지토리 Ingredient.java (Model) package com.homebar.apiserver.model; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @Entity //어노테이션이 있으면 Getter,Setter 자동 생성 @..
Optional 자바 개발자라면 누구나 한 번쯤 NullPointerException(NPE) 문제를 직면하게됩니다. 이런 문제를 해결하기 위한 방법 중 하나가 Optional입니다. NullPointerException을 방지하려면 모든 객체 참조에 대해 null 체크를 수행해야 합니다. 이는 코드를 복잡하게 만들고 가독성을 해치며 실수를 유발할 수 있습니다. Optional은 이 문제에 대한 해결책을 제공합니다. Optional은 값이 존재하지 않을 수 있는 상황을 고려하여 설계된 컨테이너 클래스입니다. Optional로 객체를 감싸고, 값이 존재하지 않을 때 NPE를 방지할 수 있습니다. Optional을 사용하는 이유 명시적인 Null 처리: Optional은 값이 없을 때 명시적으로 처리할 수 ..
JPA로 Data를 가져오기 위한 어노테이션 종류와 함께, 폴더구조(Model - Repository - Service - Controller)와 관계에 대해서 알아봅니다. 최종적으로 엔드포인트로 JSON 데이터를 가져오는 것을 예제로 만들어보겠습니다. 예제는 JPA의 findAll() 메소드를 통해 DB에 있는 Ingredient 테이블에서 모든 재료 데이터를 가져옵니다. 폴더 구조. 구조 설명. Model: 역할: 데이터 모델이나 엔티티 클래스를 정의하는데 사용됩니다. 특징: 모델은 애플리케이션에서 사용되는 데이터의 구조를 정의합니다. DB 테이블(@Table)의 엔터티(@Entity)를 표현하고, 클라이언트와 서버 간의 데이터 교환에 사용됩니다. 주로 Java Beans 규칙을 따르며, 필드, 게터..
1. MySQL 연결과 JPA 사용을 위해 아래와 같이 dependency 를 설정해줍니다. build.gradle org.springframework.boot:spring-boot-starter-data-jpa: Spring Data JPA를 사용하여 데이터베이스와 상호 작용하기 위한 스타터 의존성입니다. JPA(Java Persistence API)를 사용하여 객체-관계 매핑(ORM)을 할 수 있게 해줍니다. org.springframework.boot:spring-boot-starter-web: Spring Web을 위한 스타터 의존성입니다. Spring MVC를 사용하여 웹 애플리케이션을 구축할 수 있게 해줍니다. mysql:mysql-connector-java: MySQL 데이터베이스와의 연결을..
이전에 만들어보았던 Mybatis가 아닌 JPA로 API 서버를 구축하였다. 현재 DB와 연동이 완료된 상태이며, Flutter 소스를 조금 수정하여 http 로 json 데이터를 받아와 UI에 뿌려주면된다. 이번 기회에 http 패키지로 API 서버 통신을 한번 더 구현하였고, 이전 포스팅에서 지금까지 백엔드에 대한 지식이 많이 부족했다라는 것을 알았고 공부하려고한다. Model - Repository - Service - Controller 로 이루어진 구조로 어노테이션을 통해 이부분이 어떤 부분인지를 명시하고 하는 방식들이 새로웠다. Mybatis와 달리 실제 쿼리를 적어 Mapping 하는것이 아니라 메소드로 자동쿼리를 맨들어내 CRUD가 가능했다. 더 공부해서 풀스택 근처라도 가보자. 스프링부트..