'프로그래밍/서버'에 대한 검색결과 151개
프로그래밍/서버와(과) 일치하는 검색결과가 없습니다.
제안:
- 모든 단어의 철자가 정확한지 확인하세요.
- 다른 검색어를 사용해 보세요.
- 더 일반적인 검색어를 사용해 보세요.
[서버][스프링] Mapstruct와 Lombok 동시 사용할 때 주의할 점
의외의 동작이긴 하지만 pom(maven)을 이용하는 경우 mapstruct와 lombok을 동시에 사용 할 때 annotationProcessorPaths에 명시하는 순서가 중요한 것 같습니다. mapstruct 를 먼저 적고 그 다음에 lombok을 쓰고.. 클래스의 package 위치 등을 변경하고 빌드하면 Unknown Property in a return type 같은 에러가 발생합니다. 몇 번 테스트한 걸로 보면.. lombok이 실행되기 전에 mapstruct 관련된 어노테이션 프로세서가 동작해서 그런 것 같습니다. 설마? 하고 아래처럼 두 순서를 변경하니 에러가 마법처럼 사라지네요. org.apache.maven.plugins maven-compiler-plugin 3.8.1 1.8 1.8..
[서버][스프링] Caused by: org.h2.jdbc.JdbcSQLException: Cannot parse "TIMESTAMP" constant "0000-00-00 00:00:00"; SQL statement:
Caused by: org.h2.jdbc.JdbcSQLException: Cannot parse "TIMESTAMP" constant "0000-00-00 00:00:00"; SQL statement: JDBC가 TIMESTAMP 타입의 column에서 "0000-00-00 00:00:00"인 값을 파싱하지 못해 생기는 문제입니다. MySQL에서 datetime은 "0000-00-00 00:00:00" 값을 사용할 수 있지만 이에 매핑되는 자바의 LocalDateTime은 이를 사용할 수 없습니다. 0000년은 인식할 수 있는데 0월 0일이 문제인 것 같네요. 그렇다고 자바의 LocalDateTime에서 "0000-00-00 00:00:00"을 null로 처리하기도 애매합니다. MySQL에서 null과 ..
[서버][스프링] Entity 어노테이션으로 만들어지는 table 이름 조절
스프링에서 Entity 어노테이션을 사용하면 (설정에 따라 다르겠지만) table이 생성됩니다. 그런데 기본적으로 @Table(name="userInfo") 와 같이 테이블 이름을 설정했더라도 실제 db에 생성되는 table 이름은 user_info와 같이 언더스코어(밑줄)로 변형되어 생성됩니다. 이는 org.springframework.boot.orm.jpa.SpringNamingStrategy 에 따른 것입니다. application.properties에 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 를 설정하면 이름이 변경되지 않고 그대로 생성됩..
[서버][DB] MySQL에서 table 이름은 case sensitive일까?
일반적으로 윈도우에서 database와 table 이름은 대소문자를 가리지 않지만, 대부분의 Unix 시스템에선 대소문자를 가립니다. 좀 더 자세히 알아보면 MySQL에서 database는 data directory 내의 폴더에 해당합니다. database 내의 table은 database 폴더의 어느 파일(적어도 1개)에 해당됩니다. 그렇기에 대소문자를 가리느냐 여부는 동작되는 OS에 따라 달라집니다. 참고 stackoverflow.com/questions/6134006/are-table-names-in-mysql-case-sensitive Are table names in MySQL case sensitive? Are table names in MySQL case sensitive? On my Win..
[서버][스프링] spring.jpa.hibernate.ddl-auto 프로퍼티
spring.jpa.hibernate.ddl-auto 프로퍼티는 hibernate.hbm2ddl.auto라는 속성으로 결국 hibernate에 전달 될 값을 지정하는 방법입니다. create, create-drop, validate 및 update 값은 기본적으로 스키마 도구 관리가 시작시 데이터베이스 스키마를 조작하는 방법에 영향을 줍니다. h2와 같은 내장 DB를 쓰는지 외부 DB를 쓰는지에 따라 기본 값은 달라집니다. 내장 DB를 쓰면 기본 값은 create-drop이며, 외부 DB를 쓰는 경우 기본 값은 none입니다. h2를 쓰는 경우 spring.jpa.hibernate.ddl-auto를 none으로 설정하면 부팅시 schema.sql(DDL)이 사용되지 않으며 @Entity 어노테이션으로도 ..
[서버][DB] Table과 Schema의 차이점
저는 MySQL을 사용하고 있습니다. table과 schema는 동일한 것으로 알고 있었는데 Spring을 공부하다보니 @Table 어노테이션에 schema 어트리뷰트가 있어서 차이점이 무엇인가 찾아봤습니다. DB의 종류에 따라 문법이 조금조금 다르듯이 table과 schema의 개념도 다릅니다. MySQL에서는 table과 schema가 동의어라고 하네요. 그러나 Orable, DB2 나 다른 엔터프라이즈 급 DB에서는 차이가 있습니다. 보통 schema는 tables의 집합이고 database는 schemas의 집합입니다. H2에서 간단히 테스트 해보니 schema는 폴더 아이콘으로 나오고 table은 표 아이콘으로 나옵니다. 테이블 생성 시 스키마를 지정하여 그 스키마 안에 넣을 수도 있습니다. 참..
[서버][스프링] Hibernate와 Spring Data JPA의 차이점
Hibernate는 (그냥) JPA라는 Java ORM 규격을 구현한 것입니다. ORM은 Object Realation Mapping이라 하여 자바에서 개발자가 일일히 쿼리문을 만들어서 DB와 통신(JDBC)하는 게 아니라 객체를 만들면 자동으로 쿼리문이 만들어져서 DB와 통신이 가능하도록 하는 규격(abstraction)입니다. Spring Data JPA는 스프링에서 제공하는 JPA 상위 레이어입니다. 기본적으로 Hibernate를 사용하는데 개발자를 좀 더 편하게 만듭니다. JDBC 대신 Hibernate를 사용하면 좀 더 편합니다. 하지만 여전히.. 반복적인 boilerplate 코드를 개발자가 작성해야하는 불편함이 있습니다. mkyong.com/spring/maven-spring-hibernat..
[서버] docker-compose 공식 예제
docker 에서 공식적으로 만든 docker-compose 예제를 제공합니다. 정말 다양한 예제들을 제공하니, 관련 있는 환경의 샘플을 보면 도움이 될 것 같습니다. 아래에 그 링크 남깁니다. github.com/docker/awesome-compose docker/awesome-compose Awesome Docker Compose samples. Contribute to docker/awesome-compose development by creating an account on GitHub. github.com
[서버][스프링] DB 관련 property 알아보기
application.yml 또는 application.properties에서 쓰이는 DB 관련 프러퍼티에 대해 간단히 알아보겠습니다. spring.jpa.database: "POSTGRESQL" 작동할 대상 DB를 지정합니다. 자동 감지된 것이 기본적으로 사용됩니다. "databasePlatform" 프로퍼티를 사용하여 설정할 수도 있습니다. spring.datasource.platform: "postgres" schema-${platform}.sql 나 data-${platform}.sql와 같은 DDL 또는 DML에서 사용할 플랫폼 *DDL : Data Defination Language *DML : Data Manipulation Language *docs.spring.io/spring-boot/..
[서버] 'parent.relativePath' of POM xxx points at yyy instead of org.springframework.boot:spring-boot-starter-parent, please verify your project structure
multi 모듈 환경에서 부모 module이 있고 childe 모듈이 있는 상황을 가정하겠습니다. child 모듈의 pom은 아래와 같습니다. org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE Maven은 기본적으로 바로 상위 폴더에서 parent pom을 찾는데 상위 폴더의 parent pom은 org.springframework.boot:spring-boot-starter-parent 가 아니기에 'parent.relativePath' of POM xxx points at yyy instead of org.springframework.boot:spring-boot-starter-parent, please verify your proj..
웹에서 html/css/js 실시간으로 테스트할 수 있는 사이트
와.. 좀 전에 codepen.io라는 사이트를 알게 됐는데 상당히 좋은 것 같습니다. jsfiddle과 유사한 사이트입니다. 제 개인적으로는 jsfiddle보다 codepen이 더 좋은 것 같습니다. 결과가 실시간으로 반영도 되며 더 많은 기능을 제공하는 것 같습니다. 간단하게 링크들 남깁니다. codepen.io/pen/ Create a New Pen ... codepen.io jsfiddle.net/ JSFiddle - Code Playground jsfiddle.net 리액트 설정
[서버][스프링] IntelliJ와 iml파일에 대해
IntelliJ에서 iml파일은 모듈 디펜던시 기억을 위해 사용됩니다. pom파일에서 디펜던시를 추가하면 관련 모듈들이 iml파일에도 추가됩니다. (앱 실행시 변경되는 듯) 반대로 pom 파일에서 디펜던시를 삭제하면 iml 파일에 추가된 디펜던시가 자동으로 삭제됩니다. 만약 삭제되지 않는 것처럼 보인다면.. pom 파일에 남아있는 다른 디펜던시에서 특정 모듈을 계속 사용해서 iml파일에 남아있을 것일 수도 있습니다. pom 파일 말고 위의 화면(Project Settings > Modules)에서도 디펜던시 추가/삭제가 가능합니다. 테스트 중인 스프링 프로젝트에서 pom파일에 eureka client를 추가하지 않았음에도 실행을 시켜보면 계속 eureka client가 실행이 됐습니다. org.sprin..
[서버][Spring] WebClient와 RestTemplate에 대해
아래의 참고 링크에 스프링의 WebClient와 RestTemplate에 대해 설명이 간략하면서도 잘 되어있습니다. 다만 새로 작성되는 코드의 경우 RestTemplate를 대신하여 WebClient를 동기적으로 사용할 때의 코드가 없어 간단히 기록 남기려 합니다. 각자의 상황에 따라 인자들이나 사용하는 함수가 달라져야할 것입니다. WebClient client = WebClient.builder() .baseUrl("https://kapi.kakao.com/v1/user/access_token_info") .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken) .build(); ResponseEntity restExchange = clie..
[서버] 스프링 RestTemplate org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
스프링에서 RestTemplate를 이용해서 REST API 테스트 중인데 아래의 에러가 발생했습니다. 정확한 원인을 알려주면 좋을텐데 좀 애매하게 알려주네요. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 401 Unauthorized] with root cause org.springframework.web.client.HttpClientErrorException: 401 Unauthorized at or..
[서버][링크] Tomcat이 동작하는 원리
톰캣이 내부적으로 어떻게 동작하는지 궁금해서 찾아봤습니다. 정리된 글이 아니고 공부를 위해 관련된 글들 링크를 남깁니다. 조금 긴 설명이지만 영어로 정리된 글이 있습니다. www.mulesoft.com/tcat/tomcat-servlet An introduction to Tomcat servlet interactions | MuleSoft An introduction to Tomcat servlet interactions Although its flexible configuration and interoperability with supporting technologies have enabled Apache Tomcat to act as a web application server in many circ..
[서버] 스프링 Controller와 request, thread에 대한 정보
스프링에서 프레임워크에 의해 관리되는 Bean들은 기본적으로 Singleton 으로 생성되고 관리됩니다. Controller도 마찬가지 입니다. 다수의 HTTP request를 받으면 Controller가 어떻게 처리할까 궁금했는데 아래의 자료에서 간단한 실험을 통해 잘 정리해놨습니다.(영어) programmer.group/spring-controller-singletons-and-thread-safe-things.html Spring Controller singletons and thread-safe things Keywords: Java Spring REST Session Catalog singleton scope Each controller that adds @RestController or @Co..
[서버] [톰캣] 사용가능한 쓰레드를 초과하는 요청 발생시 일어나는 일
SO에 논의된 글이 있습니다. stackoverflow.com/questions/60502584/tomcat-what-happens-when-number-of-connections-exceeds-number-of-threads 어느 순간에 사용가능한 Thread의 수보다 connection가 더 많으면 어떤 일이 발생하나요? Thread에 의해 실행되지 않는 connection은 어떻게 되나요? Thread에 의해 실행되지 않는 connection은 worker thread가 사용가능해질 때까지 기다립니다. Tomcat은 연결을 받아들인 후 "accept queue"를 통해 worker thread로 보냅니다. 이것을 조절하는 Tomcat config 파라미터는 다음과 같습니다. acceptCount: ..
[서버][링크] 웹서버 트래픽 폭주 대비하기 - (1) Apache + Tomcat 설정값 튜닝 사례
안녕하세요. 한.. 3~4년 전에 쓰여진 글이지만, 티몬에서 운영하는 기술 블로그가 있는데 내용이 상당히 좋은 것 같습니다. 저런 글은 실제로 저런 업무를 담당하고 이슈를 분석해야 쓸 수 있는 글입니다. 보통 관련 정보를 찾기 위해 영어로 된 글을 봤었는데 제 맘에 드는 글을 찾지 못했었습니다. 오히려.. 한국에서 이런 좋은 글이 있다는게 참 좋네요 ㅎㅎ m.blog.naver.com/tmondev/220731906490 웹서버 트래픽 폭주 대비하기 - (1) Apache + Tomcat 설정값 튜닝 사례 티몬에서는 작년부터 매일 오전 10시마다 슈퍼꿀딜을 판매하고 있다. 슈퍼꿀딜은 한정 수량 + 착한 가격으... blog.naver.com m.blog.naver.com/tmondev/2207371823..