not-null property references a null or transient value

 

JPA에서 null 값을 허용하지 않는 컬럼에 null값이 들어갔다는 것...

 

이번 경우엔,

front에서 보내는 데이터엔 제대로 값이 들어갔는데

controller단 부터 값이 제대로 매핑이 안되고 있어서 디버그찍어보니

서버의 객체 필드에 오타가 있었다.

 

'Java' 카테고리의 다른 글

[JAVA] 자바의 데이터 타입 : 기본타입  (0) 2022.07.25
[JAVA] 자바 프로그램의 실행  (0) 2022.07.18
[JAVA] 프로그래밍 언어 자바란?  (0) 2022.07.06

스프링 부트에 템플릿 엔진으로 머스테치를 사용하게 되면, 한글이 깨져나왔다.

위와 같은 환경에서 올바른 한글 출력을 위한 설정은 아래와 같다.

 

application.properties

server.servlet.encoding.force-response=true

 

 

참고문헌

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html

'Java > SpringBoot' 카테고리의 다른 글

Spring Security CSRF 설정  (0) 2021.12.09
Spring Security 기본 설정  (0) 2021.12.08
Logback 기본 설정  (0) 2021.12.07

자바는 변수[각주:1]를 선언할 때, 데이터 타입을 결정하며 선언하게 된다.

int age; // 초기화 하지 않은 변수 age, 데이터 타입은 int
String name = "피그십" // 초기화 한 String 변수

 

기본 타입이란?

원시[각주:2] 타입이라고도 한다. 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입이다.

 

1 ) 정수

byte 1byte (=8bit)
short 2byte
int 4byte
long 8byte

정수형 데이터 타입을 선언 할 때에는 데이터의 최대 크기를 고려해야한다. 범위를 벗어난 값을 저장하면 overflow가 발생하여 인접한 다른 값이 저장되기 때문이다. cf) underflow [각주:3]

 

2) 실수

  메모리 크기 유효 자릿수
float 4byte 소수 부분 6자리까지 표현가능
double 8byte 소수 부분 15자리까지 표현가능

3) 문자

작은 정수나 문자 한 자를 표현하는 타입을 말한다.

char 2byte

컴퓨터 프로그래밍에서는 2진수로 표현하기에 문자를 표기할 때는 일종의 약속이 필요하다.

C와 C++에서는 아스키 코드로 문자를 표현하고, JAVA에서는 유니코드로 문자를 표현한다.

아스키 코드로는 영문자와 숫자밖에 표현이 안 되지만, 유니코드는 다양한 나라의 언어를 표현 할 수 있다.

 

4) 논리형

boolean 1byte

기본 값은 false이다.

 

 

 

참고문헌

신용권, 「이것이 자바다 1」, 한빛미디어, 2020

TCP스쿨 '기본타입' http://www.tcpschool.com/java/java_datatype_basic

  1. 하나의 값을 저장할 수 있는 메모리 공간 [본문으로]
  2. Primitive [본문으로]
  3. 해당 타입이 표현할 수 있는 최소 범위를 넘어버린 경우 [본문으로]

1. 자바 프로그램이 실행되는 과정

Write once, run everywhere

자바의 특징 중 하나는 운영체제에 종속적이지 않고 JVM만 갈아 끼우면 어디서든 실행 할 수 있다는 점이다.

JVM이란 자바 가상 머신으로, 바이트 코드로 컴파일 된 자바 소스코드를 OS위에서 실행시켜주는 가상 머신이라고 보면 된다. 자바 코드가 실행되는 과정은 아래와 같다.

자바 프로그램 실행 순서,  pigSheep

자바 코드는 자바 컴파일러에서 바이트 코드[각주:1]로 컴파일 되기 때문에 운영체제에서 바로 실행시킬 수가 없다. 그래서 자바코드는 최종적으로 JVM[각주:2]내에서 실행 되는 모양새인데, 이는 운영체제마다 프로그램을 실행하고 관리하는 방식이 다르기 때문에 각 운영체제마다 별도로 프로그램을 개발하는 것 보다 운영체제와 자바 프로그램 사이의 매개체(JVM)을 두어 하나의 코드로 다양한 운영체제에서 실행가능하게 만든 설계다. 그래서 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장한다.

 

 

2. JDK와 JRE

 

Java SE(Standard Edition)의 구현체로 JDK(Java Development Kit)와, JRE(Java Runtime Environment)가 있다.

JDK는 단어 그대로 자바 프로그램 개발을 위한 툴 킷으로 보면 되고, JRE는 자바 프로그램의 실행환경을 제공해주는 키트이다.

JDK와 JRE, pigSheep

 

참고문헌

신용권, 「이것이 자바다 1」, 한빛미디어, 2020

  1. 완전한 기계어가 아니다 [본문으로]
  2. 자바를 실행시키기위한 가상의 운영체제로 보면 쉽다. [본문으로]

1. 개요

자바는 1991년에 제임스 고슬링을 주축으로 썬 마이크로 시스템즈의 엔지니어들이 개발한 Oak라는 언어로 시작됐다.

Oak는 가전 제품을 프로그래밍 할 목적으로 만들어진 언어였지만, 인터넷의 등장으로 인터넷에서 실행되는 프로그래밍 언어로 사용하게 된다. 자바가 발표 된 1995년 ~ 1999년은 윈도우 프로그램 개발이 주류였기 때문에 자바는 주목 받지 못했다. 하지만 1999년도부터 인터넷이 활성화되며 자바 애플릿이 추가 되었고 웹 앱 개발용 언어로 자바가 주목받기 시작했다.

 

자바는 유닉스 기반의 개발자들이 개발하여 C언어와 비슷하며, JVM (Java Virtual Machine)을 사용해 운영체제에 독립적으로 동작이 가능하다.

 

2. 자바의 특징

1) 객체 지향 언어

자바는 초기 설계시부터 객체 지향 언어로 설계되었다.

객체 지향 프로그래밍(OOP)이란, 프로그램의 부분 부분에 해당하는 객체들을 먼저 만들고 그것들을 조립하여 하나의 프로그램을 완성시키는 프로그래밍 기법을 말한다.

 

2) 높은 이식성

: JRE[각주:1]를 바꿔끼면 되므로 다양한 플랫폼에 자유롭다. (운영체제에 독립적으로 실행)

 

3) 자동 메모리 관리

: 가비지 컬렉션으로 메모리 관리는 자바가 알아서 한다.

 

4) 상대적으로 느린속도

: JVM을 거치기 때문에 실행속도가 비교적 느리다.

 

3. 실행과정

자바로 짜여진 프로그램이 실행되는 과정이다.

  1. 개발자가 자바 클래스 파일(.java)를 생성
  2. 자바 컴파일러[각주:2]가 자바 바이트 코드(.class) 파일로 번역 
  3. 번역 된 자바 바이트 코드를 클래스 로더가 JVM으로 보낸다.
  4. JVM이 프로그램 실행 

 

 

 

 

 

참고문헌

위키백과 '자바 (프로그래밍 언어)' https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4) 

 

자바 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

TCP SCHOOL.COM '자바 기초' http://www.tcpschool.com/java/java_intro_basic

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

TCP SCHOOL.COM '자바 프로그래밍'http://www.tcpschool.com/java/java_intro_programming

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

  1. Java Runtime Environment, 자바 런타임 환경 [본문으로]
  2. 자바 소스코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환시키는 역할. javac.exe로 설치된다. [본문으로]

CSRF 비활성화

				...
@Override
    public void configure(HttpSecurity http) throws Exception { 
    	http.csrf().disable();
        
    			...

위와같이 스프링에서 csrf를 비활성화하면 스프링 시큐리티는 토큰을 발행하지 않는다.

하지만 보안상으로 좋지 않기때문에 개발과정이 아닌 이상 권장하지 않는다.

 

스프링 시큐리티는 csrf().disable()을 하지 않으면 알아서 csrf보호(토큰 발행,확인)를 하기 때문에

특별히 다른 설정은 안 했다.

 

현재 쓰고있는 템플릿 엔진이 JSP라서 관련해서 찾아보니까 보통 input hidden으로 토큰 값을 보내줬다.

(써보진 않았지만 thymeleaf도 비슷한 방식인 듯 하다.)

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">

위와같이 form 안에 토큰 값을 담아서 보내주니 문제없이 제대로 작동됐다.

 

 

 

참고문헌

Baeldung 'A Guide to CSRF Protection in Spring Security' https://www.baeldung.com/spring-security-csrf

'Java > SpringBoot' 카테고리의 다른 글

Spring boot : Mustache 사용시 한글 인코딩 설정  (0) 2024.03.11
Spring Security 기본 설정  (0) 2021.12.08
Logback 기본 설정  (0) 2021.12.07

+ Recent posts