Web/SpringBoot 15

[Java] 파일 구분자 (File Separator)

local은 Windows고, 실제 웹 프로젝트가 구동 될 서버는 linux이다. 경로의 경우에는 application.properties에 작성하여 간단하게 바꿔서 사용중이지만, ex) resource.filepath=C:\\workspaces\\ application.properties @Value("${resource.filepath}") private String myFilepath; java 코드 내부에서 파일 경로를 생성 할 때 바꿔주기 귀찮다. File.separator를 사용하면 OS에 따른 경로 구분자를 자동으로 바꿔준다. 윈도우 환경에서 구동한다면 \로 구분자를 리턴하고, 리눅스나 macOS환경에서는 /로 구분자를 리턴한다.

Web/SpringBoot 2022.09.14

[Java] StringBuilder로 JSON value를 만들 때 주의점

JSONArray[JSONObject{id, value}, JSONObject{id, value} .. ] StringBuilder으로 JSONObject의 value를 만들어 넣고, JSONArray로 묶어 보내는 API를 만들었더니 AJAX 통신에 실패했다. jsonviewer로 확인했더니 해당 결과값이 JSON vaule가 아니라는 문구가 나왔다. 보내준 값을 확인하니 { "id": 128, "value": Jamse (male) } 이런 형식 자세히 보면 value값이 "String"이 아니다. JSONArray resultArray = new JSONArray(); JSONObject resultObj = new JSONObject(); StringBuilder value = new String..

Web/SpringBoot 2022.09.14

[Spring Boot] JPA @Query

기본 select를 제외하고 실제 쿼리문으로 쿼리를 하려고한다. 1 2 3 @Query(value = "SELECT * FROM MEMBER mem WHERE mem.age = (:age) AND mem.office = (:office)", nativeQuery = true) public List selectByAgeOffice(@Param(value = "age")int age, @Param(value = "office")String office); Colored by Color Scripter cs memberRepository.java에 추가 1 2 3 4 5 @GetMapping("select") public List selectByAgeOffice() { return memberrepo.sele..

Web/SpringBoot 2022.03.23

[Spring Boot] JPA 테이블 대문자

Table명을 대문자로 지정하였는데, @Table에서 대문자로 지정해줬음에도 불구하고 해당 테이블을 찾지 못하고 새로 테이블을 만든다. (create table은 spring.jpa.hibernate.ddl-auto=update 설정을 해주었기 때문) 찾아보니 Hibernate의 네이밍전략때문에 그렇다. https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-access.configure-hibernate-naming-strategy 기본적 Spring Boot 물리적 명명 전략은 CamelCaseToUnderscoresNamingStrategy 이다. 1. 점(.) -> 언더바 2. 카멜케이스 -> 언더바 ..

Web/SpringBoot 2022.03.23

[Spring boot] JPA batch insert/update

데이터의 일관성을 위해 웹에서 openAPI로부터 데이터를 받고 그 데이터를 로컬 데이터베이스에 넣는다. 그 후 웹에서 데이터베이스에 데이터를 요청하면 데이터베이스는 그 데이터를 불러오는 경로이다. 데이터를 데이터베이스에 넣는 시간이 생각보다 오래 걸린다. 데이터를 200개만 해도 체감상 1~2분정도 걸리는 것 같다. 로그를 보니 JPA의 saveAll()의 문제로 확인되었다. 한꺼번에 insert되는 것처럼 보이지만 로그를 확인해보면 이런식으로 개별 insert가 진행되기때문에 데이터베이스 부하가 발생한다. https://www.baeldung.com/spring-data-jpa-batch-inserts 하이버네이트에서는 여러개의 데이터를 한번에 Insert, update하는 Batch기능을 제공한다...

Web/SpringBoot 2022.03.20

[SpringBoot/AWS EC2] MongoDB - 4 Delete, selectAll

https://hjkongkong.tistory.com/13 [SpringBoot/AWS EC2] MongoDB - 3 Update https://hjkongkong.tistory.com/12 [SpringBoot/AWS EC2] MongoDB - 2 등록 https://hjkongkong.tistory.com/11 [SpringBoot/AWS EC2] MongoDB - 1 (Auto-Generated Field) 본격적으로 개발을 앞서 오늘 사용 할.. hjkongkong.tistory.com delete와 Posts를 모두 가져오는 API 만들기 @Transactional public Long delete(Long id) { Posts posts = postsRepository.findById(id)..

Web/SpringBoot 2021.12.12
반응형