Spring9 @Transaction의 개념 @Transaction Transaction 기본 방법 Transaction은 2개 이상의 쿼리를 하나의 커녁센으로 묶어 DB에 전송하고, 이 과정에서 에러가 발생할 경우 자동으로 모든 과정을 원래대로 되돌려 놓는다. @Transactional 성질 - ACID 1. 원자성 (Atomicity) 트랜잭션과 관련된 작업들이 부분적으로 샐행되다가 중단되지 않는 것을 보장하는 능력이다. 즉 모두 성공이거나 모두 실패를 만든다. 예를 들어 돈 거래를 할때 이체를 할 때 성공하거나 실패할 수 있지만 돈을 빼는 이체 작업만 성공하고 받는 쪽에서 돈 입금이 실패 되면 안되기 때문에 이를 막기 위한 역할을 한다. 2. 일관성 (Consistency) 언제나 일관성 있는 데이터베이스 상태로 유지한다. 3. 격리성(Iso.. 2022. 6. 7. org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "CATALOGS" not found Error Springboot와 H2의 호환성 문제 H2 2.1.210 버전은 데이터베이스 도구에서 지원이 되지 않는다. IntelliJ에서 h2 데이테베이스를 불러오면 아래와 같은 에러나온다. 해결 방법은 두가지가 있다. 1. H2 버전을 낮춘다. H2 2.1.200버전 → H2 1.4.200버전으로 변경 2. H2 2.1.200 버전에 맞춰서 설정하는 방법 데이터베이스 생성하면서 URL에 입력할 때 ;OLD_INFORMATION_SCHEMA=TRUE 추가 문구를 넣어주면 문제 없이 데이테베이스를 생성이 가능하다. spring.datasource.url=jdbc:h2:./myselectdb;AUTO_SERVER=TRUE;OLD_INFORMATION_SCHEMA=TRUE 2022. 6. 3. @Bean vs @Component 빈을 사용할 수 있도록 해주는 어노테이션 @Bean와 @Component의 차이는 @Bean, @Component는 빈을 스캐닝을 하기 위해 사용되는데 정확히 언제 사용되는지 정의를 알아보자 @Bean 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Congfiguration을 선언한 클래스 내부에서 사용해준다. 메소드를 통해 반환되는 객체를 Bean을 만든다. @Component 개발자가 직접 작성한 Class를 Bean으로 등록할 수 있게 만들어 준다. 개발자가 직접 생성한 Class에 @Bean을 사용하지 못하는 이유 각 어노테이션에 선언할 수 있는 타입이 정해져 있어 해당 용도 외에 사용하는 것은 불가능하다. @Bean @Component ※ElementType 참고 2022. 6. 1. SpringBoot build에 jar이 없을 때 springboot하면서 끝난 프로젝트 외부로 배포 할려고 FileZila에 build → libs → .jar를 찾을려고 하는 파일이 없어서 난감했다. 그럴때 어떻게 생성하는지 한번 알아보자 jar이란 먼저 jar이라는것은 Java Archieve를 줄여서 jar이라고 명칭한다. Java 어플리케이션을 배포하고 동작할 수 있도록 ZIP 파일 압축 기반으로 만들어진 파일이다. 빌드 방법 및 실행 프로젝트를 실행하면 터미널를 켜 $ ./gradlew bootJar 명령어를 입력한다. 실행 시킬려면 jar 파일로 가 java -jar를 입력해 실행해도 되고, 위와 동일한 방법으로 터미널를 켜 $ ./gralew bootRun 명령어를 입력해 실행 시킬수도 있다. 2022. 5. 27. JAP Entity 클래스에서 id를 Long 타입으로 해야하는 이유와 Wrapper 클래스 Entity 클래스의 id 컬럼 변수 타입을 보면 Long으로 지정하는 경우를 볼 수 있다. 왜 int, long이 아닌 Long 타입으로 사용했을까? 기본타입(primitive type) 기본 값은 0인데 만약 id에 입력 값이 없을 때 0인지, 아니면 null 값인지 구분하기 어려워 null 값을 정확하게 처리하기위해 Wrapper 클래스인 Long, Integer 등을 쓴다. 래퍼 클래스(Wrapper class) 자바의 자료형은 기본타입(primitive type)과 참조 타입(reference type)으로 나눠진다. 기본 타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입이고 참조타입은 배열, 열거, 클래스, 인터페이스 등 객체의 위치를 참조하는 타입니다. 래퍼클래스란 8개의 기본 타입에.. 2022. 5. 24. JPA의 개념 JAP(Java Persistence API)란 무엇일까? JAP는 Java ORM 표준 스팩이다. 여기서 ORM은 Object-Relational Mapping을 의미하는데 객체와 관계형 데이터베이스를 매핑한다는 뜻이며, 기술적으로는 객체와 데이터베이스를 매핑해 각자의 역할에 맞게 설계를 가능하도록해 패러다임의 불일치한 부분을 개발자 대신 해결해준다. JAP란 Java 진영의 ORM 기술 표준으로 사용 자바 어플리케이션에서 관계형 데이터 베이스를 사용하는 방식을 정의한 인터페이스 모든 SQL를 개발자 대신해서 JPA가 자동으로 해결 JAP 사용하는 이유 ☞ 생산성 데이터베이슬르 SQL 쿼리문을 작성하고 그것을 JDBC API를 사용하는 지루하고 반복적인 일을 JPA가 해결해준다. 즉, 지루하고 반복적인.. 2022. 5. 22. 이전 1 2 다음