본문 바로가기

백엔드/Spring131

[spring] (pgjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf) postgresql 에 데이터를 삽입하는 과정에서 생긴 오류였다. org.postgresql.util.PSQLException: 오류: "ì " 값은 "MM"에 ìœ íš¨í•˜ì§€ 않음 (pgjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf) Detail: 값은 ì •ìˆ˜ì—¬ì•¼ 합니다. 오류가 발생한 이유는 DB User 정보를 잘못 적었거나 User 정보가 없을 경우에 발생한다고 한다. DB업데이트가 이루.. 2022. 3. 31.
[spring] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning JPA 프로젝트를 빌드하는데 다음과 같은 에러가 나오고 화면이 나오지 않았다. spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 이러한 오류가 생기는 것은 Spring Boot에서는 spring.jpa.open-in-view를 true로 설정하고 있는데 OSIV(Open Session In View) 측면에서 매우 부적절하다고 한다. 즉 성능이나 확장성 측면에서 볼 때 false로 해야 하는데 true로 하고 있어 warning .. 2022. 3. 31.
[Tomcat] JSESSIONID JSESSIONID 란 세션이 생성될 때 JSESSIONID쿠키가 생성 / 전송되는데, 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키이다. HTTP 프로토콜은 stateless 하기 때문에 요청시마다 새로운 연결이 생성되고 응답 후 연결은 끊기게 되므로 상태를 유지할 수 없기 때문에 따라서 상태를 저장하기 위해서 톰캣은 JSESSIONID 쿠키를 클라이언트에서 발급해주고 이 값을 통해 세션을 유지할 수 있도록 한다. 한계 톰캣 컨테이너를 2대 이상 사용할 경우 세션을 유지할 수 없다. 유지되기 위해선 세션 클러스터링 환경을 구축해야 한다. 2022. 3. 28.
JPA와 Mybatis 비교 (ORM, SQL Mapper) ORM(Object-Relational Mapping) 객체 관계 매핑 데이터베이스의 데이터를 자동으로 매핑해주는 것 RDB에 데이터 그 자체와 매핑하기 때문에 SQL을 직접 작성할 필요 없음 DB에 대한 종속성이 줄어듬 객체지향적 접근으로 생산성 증가 메소드 호출만으로 CRUD를 구현가능 JPA(Java Persistence API) - 자바 ORM기술에 대한 API 표준 명세로 Java에서 제공하는 API - 기존에 EJB에서 제공되던 엔터티 빈(Entity Bean)을 대체하는 기술 장점 RDB 종류 관계없이 사용가능 DB 변경이나 코드 재활용에 용이 기본적인 CRUD 제공이나 페이징 처리 등 구현되어 있어서 비즈니스 로직에 집중가능 테이블 생성, 변경 등 엔티티 관리 편함 쿼리에 집중할 필요 없이.. 2022. 3. 27.
[JPA] insertable, updatable @ManyToOne 어노테이션을 이용해서 참조 관계를 만들고 데이터 저장을 하는데 참조키(외래키)의 값이 null 이라고 에러가 뜨면서 저장이 되지 않았다... 외래키값이 저장되지 않은 이유는 다음 설정값이 저장되어 있었다. @JoinColumn(insertable = false, updatable = false) insertable = false 는 insert 시점에 막는 것이고 updateable = false 는 update 시점에 막는 기능이다. insertable : 엔티티 저장 시 이 필드도 같이 저장한다. false 로 설정하면 데이터베이스에 저장하지 않는다. 읽기 전용일 때 사용한다. updateable : 엔티티 수정 시 이 필드도 같이 저장한다. false 로 설정하면 데이터베이스에 .. 2022. 3. 26.
[spring] @RequiredArgsConstructor @RequiredArgsConstructor 다음 어노테이션은 초기화 되지 않은 final 필드나 @NonNull 이 붙은 필드를 인자값으로 하는 생성자를 @RequiredArgsConstructor 가 대신 생성해주는 것이다. 해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서 수정해야하는 번거로움을 해결하고자 즉, 의존성 주입(DI)의 편의성을 위해 사용되는 것이다. 스프링에서 생성자로 주입받을 때 주로 @Autowired 를 사용했는데 @Autowired 보다 @RequiredArgsConstructor 로 생성자를 주입 받는게 권장하는 방법이라고 한다. 어노테이션 사용 @RequiredArgsConstructor @Service public class ApiService { priv.. 2022. 3. 25.