Spring 13

@Transactional 사용법과 옵션

@Transactional 사용법과 옵션Spring 프레임워크에서 @Transactional 어노테이션은 트랜잭션 관리를 간편하게 해주는 도구로, 트랜잭션의 원자성, 일관성, 고립성, 내구성을 보장하도록 설정할 수 있다. propagation: 트랜잭션의 전파 방식을 결정 (기본값은 REQUIRED).isolation: 트랜잭션 격리 수준을 설정하여 트랜잭션 간 데이터 접근을 제어 (예: READ_COMMITTED, REPEATABLE_READ 등).timeout: 트랜잭션이 완료되기까지의 최대 시간을 설정.readOnly: 트랜잭션이 데이터 변경 없이 읽기 전용임을 선언.@Transactional(isolation = Isolation.SERIALIZABLE, timeout = 10, readOnly ..

Spring 2024.12.03

세션 기반 인증과 토큰 기반 인증의 차이, 왜 다를까?

웹 개발을 하다 보면 사용자 인증 방식을 선택해야 할 때가 있다. 주로 사용하는 방식은 두 가지인데, 바로 세션 기반 인증과 토큰 기반 인증이다. 각각의 방식이 어떤 차이를 가지는지, 그리고 어떤 상황에서 적합한지 알아보자. 세션 기반 인증: 서버가 기억하는 방식세션 기반 인증은 서버가 '사용자 상태'를 기억하는 구조다. 사용자가 로그인하면 서버가 세션을 생성하고, 클라이언트는 세션 ID를 통해 인증된 상태임을 증명한다. 이 세션 ID는 일반적으로 쿠키에 담아 매 요청마다 서버에 전송된다.장점: 서버에서 사용자의 상태를 저장하므로 안정적인 인증을 유지할 수 있다.예를 들어, 사용자 로그아웃 시 서버에서 세션을 삭제해버리면 모든 접속이 끊어진다.단점: 서버에 세션 상태를 저장해야 하므로 서버에 부하가 갈 ..

Spring/Spring 2024.12.02

@Transactional 사용하기 전, Transaction 이랑 먼저 친해지기

요새 회사에서 머리가 터지는 (?) 문제가 하나 (사실은 여러 개 일지도 ) 있습니다. 그건 바로, 할 때마다 새로우면서도 전체적인 플로우를 정확히 이해해야 적용할 수 있는 트랜잭션 !제대로 이해하기 위해 먼저 기본 지식을 한번 더 체크하기 위해 정리해 보려고 한다.    트랜잭션(Transaction) 이란?트랜잭션(Transaction)은 데이터베이스 관리에서 하나의 작업 단위를 의미한다. 트랜잭션은 데이터베이스의 일관성을 유지하기 위해 필요한 조치들을 묶어서 관리하는데, 이를 정리하면 "모든 작업이 성공적으로 수행되거나, 전부 수행되지 않음"을 보장하는 것이 포인트 !   트랜잭션의 특징 - ACID 속성트랜잭션은 ACID라는 네 가지 중요한 특성을 통해 데이터베이스의 안정성과 일관성을 유지한다.원..

Spring/Spring 2024.10.27

mysql insert 오류 : Data truncation: Out of range value for column

Data truncation: Out of range value for column 스프링 부트에서 MySQL로 데이터를 삽입하는 과정에서 Data truncation: Out of range value for column 오류를 만나는 경우가 종종 있습니다. 이 오류는 보통 데이터 타입 불일치나 저장하려는 값이 해당 컬럼의 데이터 타입 범위를 초과할 때 발생합니다. 이번 글에서는 이 문제의 원인과 해결 방법에 대해 알아보겠습니다. 오류 발생 상황스프링 부트 애플리케이션에서 MySQL로 데이터를 저장하려고 할 때, 다음과 같은 에러가 발생할 수 있습니다:Data truncation: Out of range value for column 'column_name' at row 1이 에러는 MySQL이 해당 ..

Spring/error 2024.10.27

Could not load requested class : org.hibernate.dialect.MySQL5InnoDBDialect

Could not load requested class : org.hibernate.dialect.MySQL5InnoDBDialect spring boot 와 hibernate 를 연결하던 도중 위 에러가 지속해서 나타났다. 우선 이 문제는 클래스를 로드하지 못하는 문제는 주로 Hibernate 설정에서 발생하는 문제였다. 이 문제의 경우에는 3가지를 체크해야 한다. 1. 의존성 확인 2. Hibernate 설정 확인 3. 버전 호환성 확인 3가지를 모두 체크 해 봤을 때 모두 잘 설정 돼 있었다 (아주 착각이었다) 그리고 한 문장을 발견했고 그건 " MySQL5InnoDBDialect 대신 적절한 Dialect를 사용해야 할 수 있습니다." 그 결과, MySQL 8.x 버전을 사용하는 경우 MySQL8..

Spring/error 2023.11.30

프로젝트 생성 & 라이브러리 살펴보기

** 본 내용은 김영한의 강의를 수강하고 작성하였습니다. 스프링 부프 생성스프링 부트 스타터( https://start.spring.io/ )를 통해서 간편하게 프로젝트를 생성할 수 있다.  프로젝트 기본 설정은 아래와 같다.Gradle-Groovy와 Gradle-Kotln 중에 고민했는데, 아직 보편적으로는 전자를 많이 사용한다고 해서 Gradle-Groovy로 선택  H2 는 간단하게 웹 어플리케이션 실행할 때 데이터베이스를 메모리 상태에 내장에서 실행 할 수 있어 간단하다.     파일을 열고, JpashopApplication 를 실행하는데 만난 에러  "Web server failed to start. Port 8080 was already in use."  위 에러의 해결 방법은 아래 게시글..

Board - 게시물 등록 및 수정 / 첨부 파일 인코딩 및 등록

게시글 등록 write.jsp 게시판 작성 제목 작성자 첨부파일 내용 servlet-context.xml 로그인 하지 않은 사람은 url로접근하지 못하도록 인터셉터에 매핑한다. BoardController @GetMapping("/write") public String write() { log.info("게시글 작성 페이지 요청"); return "board/write"; } jsp 페이지가 연결되도록 Controller 에서 get 요청을 한다. 클래스 상단에 @RequestMapping("/board") 설정하면 mapping 할 때 자동으로 앞에 "/board"를 표시해준다. 추가로, post 요청을 처리하는 메소드를 만든다. (GetMapping만 하면 405 에러 발생) pom.xml commo..

Spring/Spring MVC2 2022.10.24

Board - 전체 게시글 / 상세 페이지 / 게시글 삭제

@controller 등록 controller로 등록하기 위해 @controller 어노테이션을 BoardController 클래스 상단에 추가 @controller - 웹 애플리케이션에서 웹 요청과 응답을 처리하는 빈을 생성한다. Bean을 찾아 자동으로 맵핑시켜주기 위해 @Autowired 어노테이션을 BoardService 메서드 상단에 추가 게시글 전체 리스트 @GetMapping("/board/list") public ModelAndView list(ModelAndView model, @RequestParam(value="page", defaultValue="1") int page) { List list = null; PageInfo pageInfo = null; pageInfo = new Pa..

Spring/Spring MVC2 2022.10.23

기본 설정 ② root-context.xml

root-context.xml @PropertySource()을 생략하여 driver.properties 연결 db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@localhost:1521:xe db.username=WEB db.password=WEB 요소를 사용하여 다른 XML 설정 연결 import 요소를 사용해 xml 연결할 수 있어 여러 개 설정이 가능하다. mybatis-context.xml mybatis-config.xml에 있는 속성들을 bean으로 등록하는 방법을 사용하기 BasicDataSource Configuration 빈의 속성을 직접 적용 p:mapperLocations="classpath:mappers/**/*...

Spring/Spring MVC2 2022.09.02