프레임워크/Spring 25

[인프런][스프링 입문] 9~12 강

비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tut..

[인프런][스프링 입문] 5~8 강

빌드하고 실행하기 정적 컨텐츠 MVC와 템플릿 엔진 API https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react na..

[인프런][스프링 입문] 1~4 강

강의 소개 프로젝트 생성 라이브러리 살펴보기 View 환경설정 https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react ..

[Spring] 문서의 요소 콘텐츠에서 부적합한 XML 문자

[에러] 문서의 요소 콘텐츠에서 부적합한 XML 문자(유니코드: 0x14)가 발견되었습니다. (An invalid XML character (Unicode: 0x14) was found in the element content of the document.) Tistory API의 결과를 XML로 받아오며 아래와 같은 방식으로 XML String(xml)을 파싱하여 사용하였습니다. import org.w3c.dom.Document; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.Parse..

[Spring] 예외 처리시 Throws vs try-cat-finally

예외처리를 하는 방법으로 Throws와 try-cat 두 가지 방법이 있는데, 어떤 방식으로 예외처리를 사용하는 것이 좋을지 찾아보게 되었습니다. 어떤 예외처리를 사용할지에 대해 간단하게 다음 2가지 기준이 있었습니다. catch문에서 유의미한 처리를 할 수 있는 경우만 try-catch 사용 input parameter로 인한 오류의 경우 throws Exception 사용 CrudRepository Exception CrudRepository를 사용할 때는 따로 exception을 확인할 필요가 없는게 DataAccessException에 대해 built-in되어 있다고 합니다. NonTransientDataAccessException - DB에 존재하지 않는 id의 접근과 같이, 예외 원인이 정정되..

[Spring] CrudRepository의 save vs saveAll

프로젝트를 하면서 데이터를 저장하는 부분을 구현하고 있었습니다. CrudRepository에는 Iterable을 input으로 여러 tuple을 저장하는 메서드인 saveAll을 제공하고 있습니다. 그런데 제가 구현하는 부분에서는 loop에서 여러 tuple을 save로 저장하고 싶었습니다. 두 메서드의 속도에 차이가 있을까요? save가 오래걸리지 않을까? 저는 단순하게 여러번 쿼리를 날리는 것보다 한 번 쿼리를 날리는 것이 더 시간이 덜 소요될 것이라 생각했습니다. 예를 들어 100개의 tuple을 저장해야한다고 했을 때, save 메서드로 tuple 하나마다 데이터베이스에 요청을 날리면, 데이터베이스는 쿼리가 올 때마다 해당 데이터를 저장하기위해 저장장치에 접근할 것이라 생각했기 때문입니다. sav..

[Spring] CrudRepository를 이용한 table join

지금까지 Spring boot에서 CrudRepository를 사용할 때 다음과 같은 루틴으로 사용하였습니다. DB Table과 일치하는 DAO를 만든다. 해당 객체가 사용되는 CrudRepository Interface를 작성한다. 그런데 join된 Table에 대한 정보를 읽어와야하는 일이 생겼습니다. 스택오버플로우에서 아래와 같은 글을 발견하여 정리해봅니다. https://stackoverflow.com/questions/43891571/crudrepository-join-single-field-from-other-table-to-entity-as-readonly Crudrepository / Join single field from other table to entity as readonly Be..