MySQL 작업시

default CURRENT_TIMESTAMP 을 해놓아도 안될 때가 있다. (기본적으로 not null로 설정 안되어 있으면 먹지 않음)

위 작업할 때 not null은 기본적으로 설정 해 주어야 하는데, 갑자기 default 값이 먹지 않고 값이 not null 이여아 한다는 오류가 뜰때가 있다.

이 경우 MySQL 쿼리로


SET explicit_defaults_for_timestamp=0


을 날려주면 된다.


※ 특히 Amazon RDS 기본 값은 SET explicit_defaults_for_timestamp=1 이기 때문에 필히 RDS 관리 홈페이지에서 파라미터 그룹을 생성하면 된다.


※ MySQL 8.0 부터 deprecated 되어 안된다. 현재 자신이 사용하는 프로젝트(프로그램 및 언어)에서 만약 Date의 DataType이 String으로 되어있다면 DataType을 Date형식으로 바꾸어야 함.


Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하는 방법이다.

JPA ORM방식으로는 https://pangyeon.tistory.com/4?category=682580 여기에 있다.


JPA ORM 방식으로 하는 방법은 여기에 있다.

1. 2018/10/24 - [Spring Boot] - Spring boot jpa map, hashmap, JSON형식



Spring Boot Json익히기

Spring boot Json 1편, 2편, 3편, 4편, 마지막

1. 2018/11/06 - [Develop/Spring Boot] - Spring Boot Json, JsonObject로 만들기 - JSON 1편

2. 2018/11/07 - [Develop/Spring Boot] - Spring Boot Json, Gson을 이용한 JsonObject to String, String to JsonObject- JSON 2편

3. 2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

4. 2018/11/12 - [Develop/Spring Boot] - Spring Boot Deserialization Json, Deserialization JsonString to JsonObject - Json 4편

5. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막


Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기



//import할 것
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

//EnittyManager 선언
@PersistenceContext
private EntityManager entityManager;


Query query = entityManager.createNativeQuery("SELECT id, password FROM Test");
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List r = query.getResultList();

for(Object obj : r) {
		Map row = (Map) obj;
			
		for(Object key: row.keySet()) {						
			System.out.println("key : " + key + "value : " + row.get(key));
		}		
}


이렇게 하게되면 결과가 Map 형식으로 mapping되어 나타나게 되며, 만약 테스트id라는 값과 테스트pw라는 값이 Test라는 테이블에 있다면,

key : id value : 테스트id

key : password value : 테스트pw

이렇게 값이 찍힌다.



AWS Elastic BeanStalk를 이용한 Spring boot의 Jar파일 배포를 할 것이다. War파일도 다를게 없지만, 조금 다르긴하다.

차이점으로는 Java플랫폼을 사용한 Jar파일 배포는 JVM 커맨드라인을 사용할 수 없지만 대신 .ebextensions/ 의 Procfile을 통해 사용할 수 있지만, 이 글에서는 다루지 않는다. (바로 아래에 경로가 있다)

Tomcat 플랫폼을 사용한 War파일 배포는 JVM 커맨드 라인을 사용할 수 있다. 


1. Elastic beanstalk 환경변수설정시 주의사항

2019/02/12 - [Develop/Spring Boot] - Spring boot ElasticBeanstalk 환경변수설정시 주의사항


2. .ebextensions 와 Procfile

2019/02/12 - [Develop/Spring Boot] - Spring boot .ebextensions nginx 및 기본 사용방법 (AWS Elastic Beanstalk)




1. 먼저 AWS의 Elastic BeanStalk에 들어간다.

지금 같은 경우는 애플리케이션이 하나 생성되어 있어서 맨처음 화면이 아래와 같이 나타나게 되지만. 처음에는 시작하기라는 화면이 나올텐데

크게 다르지 않다. 어쨌든 생성하는 방식은 같다.


※ 주의 Jar파일 빌드전 appliaction.properties에서 server.port=5000으로 설정한다. 안하신 분들을 밑에 환경변수 설정부분을 보시면 됨. War파일은 안해도 됨. Jar파일은 ngnix가 port를 5000번으로 잡기때문




2. 화면 상단의 새 애플리케이션 생성에서 새 애플리케여신을 생성한 다음. 아래의 사진 처럼 작업의 환경 생성에 들어간다.



3. 환경 생성에 들어오면 아래와 같이 환경 티어 선택이있는데, 웹 서버 환경을 선택한다.


4.  환경이름과 도메인은 본인들이 쓸 이름을 적으면된다. 그리고 플랫폼에 Java라고 선택한다.(Jar파일을 사용할거기 때문)

War파일을 배포할 분들이라면 플랫폼에 Tomcat을 선택한다.

그리고 Jar파일을 처음 배포하는 것이기 때문에 애플리케이션 코드에서 코드업로드를 선택한다.




5. 코드 업로드를하게 되면 기존 컴퓨터에 저장되어있는 Jar파일 또는 War파일을 선택할 수 도있으며, S3를 사용하시는 분들이라면 S3에있는 파일을 사용할 수도 있다.  



6. 파일 업로드 후 추가 옵션 구성에서 본인이 필요한 옵션들을 설정할 수 있다. 특히 appliaction.properties에 들어가는 환경변수라던지

War파일 배포하는 분들이라면 JVM Command Line 명령어 등 과 로드밸런싱을 설정할 수 있다.

7. application.properties나 War파일 배포하시는 분들이라면 위 사진의 소프트웨어를 클릭하고 수정버튼을 누르고 아래와 같이 사용할 수 있다.

주의할 점으로는 application.properties파일과는 달리 예를들어 server.port 이면 SERVER_PORT 밑에 점 대신 언더바 _ 를 사용해야 한다.


※ 주의 Jar파일 빌드전 appliaction.properties에서 server.port=5000으로 설정안하신 분들은 밑에 사진의 SERVER_PORT부분을 추가하면 됨. War파일은 안해도 됨. Jar파일은 ngnix가 port를 5000번으로 잡기때문



8. 이후 저장하면 생성중이라는 콘솔화면이 나타나며 생성이 되면 대시보드가 나오게 될 것이다.

에러가 난다면 옆의 Log메뉴에서 Log를 호출하여 보면 된다.


참고 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/GettingStarted.html

+ Recent posts