-
[Spring boot] 인턴 프로젝트 기록 - 개발 참고사항Backend/개발 2020. 4. 6. 21:43반응형
ManyToMany 관계 tostring 무한으로되는거 방지 => @JsonIgnore 사용
-> 이때는 좀 단순 해결을 위해서 이 방법을 썼는데 이런 어노테이션 외에 Dto를 생성하거나,, 좀 다른 방식으로 해결하는게 좋을 것 같다! 21.08.23
ex) store.java - menu.java
store 마다 menu 여러개 갖고있는 상태
// store.java 일부 @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnore @JoinTable(name = "store_menu", joinColumns = @JoinColumn(name = "store_id"), inverseJoinColumns = @JoinColumn(name = "menu_id")) private List<Menu> menus = new ArrayList<>(); // 메뉴
//menu.java 일부 @ToString(exclude = "stores") //toString()시에 store는 제외해서 읽어옴 //이렇게 안하면 menu 부를때마다 계속 store 불러서 쿼리가 엄청 많아짐 @Entity @Table(name = "menu") @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) //no serializer found뭐이런거 오류나는거 예방 public class Menu { //... @ManyToMany(mappedBy = "menus") @JsonBackReference // menu json으로 불러올때 stores는 제외 private List<Store> stores = new ArrayList<Store>(); //... }
ENUM String 으로
@Enumerated(EnumType.STRING) private ImageType type;
- enum 타입 만들때 EnumType.STRING 해줘야 디비에서 이걸 0,1,2,3, 으로 인식 안하고 문자 그대로 들어감
fetch (LAZY,EAGER)
//entity의 정보를 요청할 때 읽어옴 @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) //entity의 정보를 미리 읽어옴 @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 내용을 입력하세요.
s3 timeout wating for connect 오류
2020-03-23 15:07:06.266 ERROR 8846 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.amazonaws.SdkClientException: Unable to execute HTTP request: Timeout waiting for connection from pool] with root cause org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:314) ~[httpclient-4.5.10.jar!/:4.5.10] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:280) ~[httpclient-4.5.10.jar!/:4.5.10] at sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
getObject 하는곳에서 close를 안해줘서 connection pool 이 꽉차는거같아서
try{obejct = getobject(bucket,"");} catch{} finally{ object!=null? object.close();}
대략적으로 이렇게 객체를 close해주었다. 외부 라이브러리 쓸 때 커넥션,객체 생성시 해제하는 것에 유의해줘야겠다.
spring mvc view에서 thymleaf 권한 쓸때
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml">
xmlns:sec="http://www.w3.org/1999/xhtml" 이거 넣어줘야함.
xmlns:th="http://www.thymeleaf.org" 이거는 th 쓸때spring devtool 정적파일 reload
//build.gradle compile("org.springframework.boot:spring-boot-devtools") //yml devtools: livereload: enabled: true freemarker: cache: false thymeleaf: cache: false
registry 검색 automake.when.app.running 뭐 이런거 체크
prefrence compiler build auto 어쩌고 체크
'Backend > 개발' 카테고리의 다른 글
[Spring Boot] spread sheet 연동하기 2 (0) 2021.07.23 [Spring Boot] spread sheet 연동하기 (3) 2021.07.21 [Java] 우선순위 큐, Comparable vs Comparator (2) 2021.07.14 [Notion] TIL 1-27일차 (0) 2021.07.14 [Spring Boot] For Loop vs Stream, FindById vs GetOne (0) 2021.07.12