Tagged: spring

[Spring]트랜잭션의 전파옵션

스프링에서 트랜잭션의 전파옵션에 대해서 알아보자. 디폴트 값은 REQUIRED 이다. REQUIRED가장 많이 사용하는 기본 설정이다. 기존 트랜잭션 없음: 새로운 트랜잭션을 생성한다.기존 트랜잭션 있음: 기존 트랜잭션에 참여한다. REQUIRES_NEW항상 새로운 트랜잭션을 생성한다. SUPPORT트랜잭션을 지원한다는 뜻이다.기존 트랜잭션 없음:...

[Spring]스프링 트랜잭션 전파의 기본원칙

스프링에서는 트랜잭션을 물리 트랜잭션, 논리 트랜잭션으로 구분한다. 스프링에서는 모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋된다. (기본 전파레벨 : required) 하나의 논리 트랜잭션이라도 롤백이 발생하면 물리 트랜잭션은 롤백된다. (모든 논리트랜잭션이 롤백된다.)

[Spring]@Transactional에서 예외발생 시 커밋과 롤백

스프링의 트랜잭션 AOP에서는 예외의 종류에 따라 트랜잭션을 커밋하거나 롤백한다. 예외 구분 트랜잭션 Object Throwable Error LinkageError 롤백 ThreadDeath 롤백 .. 기타 에러 롤백 Exception RuntimeException unChecked 롤백 SQLException checked 커밋 … 기타 예외 checked...

[Spring]@Transactional 사용 시 주의사항

스프링에서의 @Transactional은 기본적으로 프록시방식의 AOP를 사용한다. 호출순서는 아래와 같다. 클라이언트 -> 프록시 호출 -> 프록시 @Transactional 메서드 호출 -> 트랜잭션 적용 -> target 호출 -> target 메서드 호출 그런데 target 내부에서 메서드 호출이 발생하면...

[Spring]@Transactional 적용 우선순위

클래스의 메서드(우선순위 높음) > 클래스의 타입 > 인터페이스의 메서드 > 안터페이스의 타입(우선순위 낮음) 위 4군데에 모두 @Transactional이 사용되었다면, 클래스의 메서드의 @Trnasactional을 가장 먼저 사용한다. 스프링에서는 보통 “구체적인 것”이 “추상화된 것”보다 높은 우선순위를 가진다. @Transactional...

[Spring Data JPA]쿼리 메소드 기능

Spring Data JPA에서 제공해주는 기능 중 메소드명으로 쿼리를 가능하게 해주는 기술이 있다. 자주 쓰는 기술 몇 가지에 대해 알아보자. 참고 : __ 은 생략 가능하다. 더 자세한 것은 공식사이트를 참조하자. (공식사이트) Keyword Sample JPQL...

[Spring]@Repository 기능

Spring에서 데이터 엑세스 클래스에 주로 사용하는 @Repository의 2가지 기능에 대해 알아보자. JPA의 EntityManager를 이용하여 DB 엑세스 시 예외가 발생하면 JPA에서 정의한 예외(PersistenceException)가 발생한다. 하지만 @Repository가 적용되면, 이를 Spring의 DataAccessException으로 자동으로 변환시켜 준다. 이는 PersistenceExceptionTranslater라는...

[Java]JdbcTemplate의 queryForObject()

스프링부트에서 기본으로 제공하는 JdbcTemplate중 queryForObject() 메서드 기본 사용방법을 정리한다. build.gradle에 아래 내용을 추가한다. queryForObject는 1개의 row를 반환한다. 입력 파라미터에 RowMapper<T>를 넣어줘야 하는데, 아래와 같이 람다식을 이용하면 편리하다. queryForObject는 데이터가 null이면 EmptyResultDataAccessException이 발생하므로 try… catch문으로...

[Spring]List(Collection)에 @Valid 적용하기

Java에서 제공하는 빈 검증기(Bean Validator)인 @Valid 는 Collection 타입에는 적용되지 않는다. 예컨데 아래와 같은경우 “/addUser”는 검증기능이 정상적으로 동작하나 “/addUsers”의 경우에는 기대한대로 동작하지 않는다. 이 경우 List<User>를 필드로 가진 클래스를 생성하고, @Valid를 List에 적용하면 해결할...

Spring Security Exception 종류

많이 쓰이는 예외만 정리합니다. AuthenticationException UsernameNotFoundException : 계정 없음 BadCredentialsException : 비밀번호 불일치 AccountStatusException AccountExpiredException : 계정만료 CredentialsExpiredException : 비밀번호 만료 DisabledException : 계정 비활성화 LockedException : 계정잠기 참고페이지 : https://docs.spring.io/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/core/AuthenticationException.html