본문 바로가기

분류 전체보기621

[Spring Security] The signing key's size is 40 bits which is not secure enough for the HS512 algorithm. spring security + jwt 에서 로그인 api 를 사용하던 중 다음과 같은 에러가 나왔다. io.jsonwebtoken.security.WeakKeyException: The signing key's size is 40 bits which is not secure enough for the HS512 algorithm. The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HS512 MUST have a size >= 512 bits (the key size must be greater than or equal to the hash output size). Consider using the io.jsonweb.. 2022. 11. 9.
[mysql] Failed to determine a suitable driver class spring 에서 db 를 사용하는데 아래와 같은 메리지가 나오면서 db 연결이 안되고 빌드되지 않았다. 에러 메시지 해결방법 application.yml 파일에 mysql 드라이브가 추가 되어 있는지 확인하고 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver build.gradle 에 mysql 를 추가해준다. implementation 'mysql:mysql-connector-java:8.0.30' 버전은 아래 링크에서 확인할 수 있다. maven repository https://mvnrepository.com/artifact/mysql/mysql-connector-java 2022. 11. 8.
[spring] swagger2로 API 명세서 만들기 Swagger 란 REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이되는 OpenAPI 사양을 중심으로 구축 된 오픈 소스 도구 세트이다. swagger를 사용하는 이유는 코드 몇줄로 API 명세서를 작성해 사용할 수 있으며 테스트할 수 있는 UI도 제공한다. 또한 파라메터를 넣어보고 테스트도 할 수 있다. API 문서를 작성하는 시간도 줄이고 실시간으로 유지할 수 있다는 장점도 있다. 사용방법 '3.0.0' 과 '2.9.2' 의 설정 방법이 다른데 나는 '2.9.2' 버전으로 진행했다. 의존성 추가 - gradle // swagger compile 'io.springfox:springfox-swagger2:2.9.2' compile 'io.springfox:springfox-swagger-u.. 2022. 9. 28.
[JPA] Collection 컬렉션 (Collection, List, Set, List+@OrderColumn) JPA는 자바에서 기본적으로 제공하는 Collection, List, Set, Map 컬렉션을 지원한다. 하이버네이트가 컬렉션을 효율적으로 관리하기 위해 하이버네이트는 엔티티를 영속 상태로 만들 때 Collection으로 한번 감싸서 사용한다. Collection은 아래 두가지 상황에서 사용한다. @OneToMany , @ManyToMany 를 사용해서 일대다나 다대다 관계를 매핑할 때 @ElementCollection 을 사용해서 값 타입을 하나 이상 보관할 때 Collection, List Collection, List 는 중복을 허용하는 컬렉션이다. PersistentBag을 래퍼 컬렉션으로 사용한다. 하이버네이트의 특징 때문에 Collection을 사용할 때 즉시 초기화해서 사용하는 것을 권장한다.. 2022. 9. 15.
[JPA] Optional Optional Optional은 Java8 부터 도입된 클래스로 null이 아닌 값을 포함하거나 포함하지 않을 수 있는 컨테이너 객체이다. Spring Data JPA 사용 시 Repository에서 리턴 타입을 Optional로 받을 수 있도록 지원하고 Optional을 사용하면 반복적인 Null 체크 를 줄일 수 있기 때문에 잘 사용하면 편리하고 좋다. Mybatis를 쓰거나 Java8버전 이하로 개발하면 익숙하지 않을 수 있다. @Override @Transactional public Sample updateSample(Long sampleId) { Optional sample = sampleRepository.findById(sampleId); if(!sample.isPresent()) { th.. 2022. 9. 14.
[JPA] @Embedded, @Embeddable 임베디드 타입(Embedded type) JPA에서 새로운 값 타입을 직접 정의해서 사용하는 것을 임베디드 타입이라고 한다. 임베디드 타입도 int, String 처럼 값 타입이다. 임베디드를 사용하지 않았을 때 @Entity public class User { @Id @GeneratedValue private Integer id; private String name; private String phone; // address private String city; private String country; private String zipcode; // standard getters, setters } User가 상세한 데이터(주소)를 그대로 가지고 있는 것은 객체지향적이지 않으면 응집력만 떨어진다. 임.. 2022. 9. 14.