Framework
-
최근 약 3만건의 데이터를 저장하는 일이 있었습니다. 이번 포스팅에서는 MyBatis로 대량 데이터 저장할 때 효과적인 방법에 대해 알아보겠습니다. 테스트 환경Spring BootJDK11MyBatisOracle대량의 데이터를 저장해야할 때 단건씩 저장하면 매우 많은 시간을 소요하게 됩니다. 때문에 보통 Bulk Insert를 통해 저장합니다.Oracle에서 Bulk Insert시에 사용할 수 있는 쿼리는 2가지로 볼 수 있습니다. INSERT ALLINSERT ALL은 여러 테이블에 동시에 데이터를 입력할 때 사용할 수 있는 구문입니다.INSERT ALL INTO [TABLE] (col1, col2) VALUES ('value1','value2') INTO [TABLE] (col1, col..
[Spring Boot]대량 데이터 저장하기 2024. 10. 17. -
최근 이직한 곳에서는 Oracle DB를 사용하고 있었습니다.오랜만에 예전 기억도 되새길겸 연동 과정을 기록에 남겨봤습니다. 회사 환경과 동일하게 맞추기 위해 Spring Boot 환경에서 외부 톰캣을 사용했고, JNDI를 통해 DB 리소스를 가져왔습니다. DB연결에는 ojdbc를 이용했고, MyBatis 연결까지의 과정을 공유합니다. 테스트 환경Spring Boot 2.7.5JDK 1.8ojdbc8MavenMyBatis1. 의존성 주입Maven repository 접속해서 아래 의존성을 추가합니다. org.springframework.boot spring-boot-starter-data-jdbc org.apache.commons commons-dbcp2 org.mybatis...
[Spring Boot]Oracle DB 연결하기 2024. 9. 2. -
최근 Spring Security 설정을 하며 발견한 오류 입니다.해당 오류는 Spring Security의 AuthenticationProvider를 구현하며 메소드를 Overried하여 그대로 사용하는 경우 발생할 수 있습니다. AuthenticationProvider에는 authenticate, supports 두 메소드가 존재합니다.인터페이스 상속 후 자동으로 Overried를 하게 되면 supports 메소드의 리터값은 false로 고정되어 있습니다. public interface AuthenticationProvider { /** * Performs authentication with the same contract as * {@link org.springframework.security..
[Error]Spring Security authenticate 302 2024. 9. 2. -
Xcode 빌드시 발생한 오류입니다.error: Sandbox: rsync.samba(22953) deny(1) file-write-create /Users/eeesnghyun/Library/Developer/Xcode/DreivedData/Runner-axfbqbxwydyxttaoazrqretedltu/Build/Intermediates.noindex/ArchiveIntermediates/Runner/BuildProductsPath/Release-iphoneos/Flutter.framework (in target 'Runner' from project 'Runner') Xcode는 잠잠하다 싶을 때 이해안되는 오류를 종종 보여주곤 하네요.. Runner - TARGETS - Runner - Build..
[Error]error: Sandbox: rsync.samba(22953) deny(1) file-write-create ... 2024. 8. 26. -
최근 개발 중인 앱에 비밀번호 재설정 기능을 추가하게 되었습니다.앱에서 서버로 비밀번호 재설정 요청을 하면 비밀번호 랜덤 설정 후 메일 전송 로직을 실행하게 됩니다. 이 때, 앱에서는 메일 전송이 완료되기까지 기다릴 필요가 없기 때문에 비동기로 작동할 수 있게 처리했습니다. 오늘은 Spring Boot에 @Async를 이용한 비동기 처리를 알아보겠습니다.테스트 환경Spring Boot 2.7.5JDK 1.8Gradle비동기 처리 없이 비밀번호 재설정을 실행했을 때의 모습입니다. 메일 발송까지 기다리다보니 비밀번호 재설정은 되었음에도 메일 발송 속도에 따라 3~5초 정도의 딜레이가 추가되는 것을 확인할 수 있었습니다.*메일 발송으로 javax.mail 라이브러리를 사용하고 있고 Gmail STMP가 설정되..
[Spring Boot]@Async로 비동기 처리하기 2024. 7. 18. -
최근 만든 앱에 푸쉬 기능을 추가할 일이 생겨 Spring Boot로 구축된 서버에 Firebase를 적용했습니다.이번 포스팅에서는 Firebase Admin SDK를 이용해 푸쉬를 보내는 방법을 알아보겠습니다. 이외에도 FCM를 이용한 글이 있으니 참고해 주세요.Node를 이용한 FCM PushFlutter FCM 설정하기 ※ 테스트 환경Spring Boot 2.7.5JDK 1.8Gradle1. Firebase Admin SDK 다운로드파이어베이스 접속 후 Admin SDK를 다운받습니다. 다운받은 파일을 resousrces 디렉토리에 저장합니다. 2. 의존성 추가푸쉬를 위해 firebase-admin을 추가합니다.build.gradle implementation group: 'com.googl..
[Spring Boot]Firebase Admin SDK를 이용해 푸쉬 보내기 2024. 7. 4. -
최근 Flutter로 모바일 게시판을 개발하게 됐는데 페이징 처리를 고민하다가 무한 스크롤 방식으로 결정했습니다. 패키지 중에 infinite_scroll_pagination이 문서도 잘 나와있고 사용하기도 편했습니다. infinite_scroll_pagination을 적용한 앱(농실농실 보러가기) 화면 중 공지사항 페이지를 예제로 소개합니다. 실제 개발중인 프로젝트의 코드를 가져왔기 때문에 중간중간 import가 불가능한 코드들이 존재합니다. 페이징 컨트롤러, 위젯의 생김새, _fetchPage 함수 부분들만 참고하시고 각자의 프로젝트에 맞게 적용해서 사용하시길 바랍니다. 개발 환경Flutter 3.16.5Dart 3.2.3Spring boot 2.7.51. 패키지 설치flutter pub add in..
[Flutter]무한 스크롤 구현하기 2024. 6. 21. -
앱 스토어에 아무런 설정없이 배포를 했을 때 기본 언어가 EN으로 설정되어 있게 됩니다.아래와 같이 언어란에 KO를 표기하기 위해서 따로 설정이 필요합니다. 프로젝트 - iOS - Runner.xcodeproj 파일을 vscode로 엽니다. project.pbxproj 파일의 developmentRegion과 knowRegions의 en -> ko로 변경합니다.
[Flutter]iOS 앱 기본 언어 정보 한글로 변경하기 2024. 5. 20.