[Spring DB] 예외 추상화, jdbcTemplate
Back-End/Spring2024. 3. 5. 00:08[Spring DB] 예외 추상화, jdbcTemplate

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 스프링 데이터 접근 예외 계층 스프링은 데이터 접근과 관련된 예외를 추상화해서 제공한다. 스프링은 데이터 접근 계층에 대한 수십 가지 예외를 정리해서 일관된 예외 계층을 제공한다. 각각의 예외는 특정 기술에 종속적이지 않게 설계되어 있다. 따라서 서비스 계층에서도 스프링이 제공하는 예외를 사용하면 된다. 예를 들어서 JDBC 기술을 사용하든, JPA 기술을 사용하든 스프링이 제공하는 예외를 사용하면 된다. JDBC나 JPA를 사용할 때 발생하는 예외를 스프링이 제공하는 예외로 변환해주는 역할도 스프링이 제공한다. 예외의 최고 상위는 org.springframework.dao.DataAccessException ..

[Spring DB] 예외의 이해
Back-End/Spring2024. 3. 4. 00:53[Spring DB] 예외의 이해

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 예외 계층과 체크, 언체크 예외 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다. 이 예외를 잡으면 Error 까지 잡기 때문에 Exception 예외부터 잡는다. Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 개발자는 이 예외를 잡을 필요가 없다. Exception: 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. 이 예외를 상속받으면 체크 예외가 된다. Exception과 그..

[Spring] 스프링 부트의 자동 리소스 등록
Back-End/Spring2024. 3. 3. 00:02[Spring] 스프링 부트의 자동 리소스 등록

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 테스트 코드가 아래와 같이 작성되어 있다고 가정하자. @SpringBootTest class MemberServiceV3_3Test { @Autowired MemberRepositoryV3 memberRepository; @Autowired MemberServiceV3_3 memberService; @TestConfiguration static class TestConfig { @Bean DataSource dataSource() { return new DriverManagerDataSource(URL, USERNAME, PASSWORD); //직접 데이터 소스 등록 } @Bean PlatformTransact..

[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.
Back-End/기타2024. 3. 2. 06:15[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.

Mac에서 서버가 가동중인 상태로 프로젝트를 닫아버려서 Web server failed to start. Port 8080 was already in use. 오류가 발생하였다. 8080 포트가 이미 실행중인데 다시 이 포트를 사용하려고 하니 포트 충돌로 인한 오류로 보여진다. 해결 방법은 간단하다. 터미널을 열고 아래의 명령어를 입력한다. sudo lsof -i :8080 위 명령어를 입력하면 아래와 같은 메시지가 출력된다. PID라는 항목이 중요하다. PID 9894가 8080포트를 사용중인 것이다. 따라서 아래의 명령어로 8080포트를 사용중인 프로세스를 강제로 종료시킨다. kill -9 PID번호

[Spring DB] 트랜잭션 AOP
Back-End/Spring2024. 3. 2. 00:39[Spring DB] 트랜잭션 AOP

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 AOP(Aspect-Oriented Programming)는 스프링 프레임워크가 트랜잭션 관리를 위해 제공하는 선언적 트랜잭션 관리 방식이다. 이 방법을 통해 개발자는 비즈니스 로직과 트랜잭션 관리 코드를 분리할 수 있으며, 이로 인해 코드의 가독성과 유지보수성이 크게 향상된다. 스프링에서는 @Transactional 어노테이션을 사용하여 클래스나 메소드 레벨에서 트랜잭션을 선언적으로 관리할 수 있게 한다. 트랜잭션 AOP의 특징은 아래와 같다 @Transactional 어노테이션 사용: 개발자는 트랜잭션을 적용하고자 하는 메소드나 클래스에 @Transactional 어노테이션을 붙인다. 이 어노테이션..

[Spring DB] 트랜잭션 템플릿
Back-End/Spring2024. 3. 1. 00:58[Spring DB] 트랜잭션 템플릿

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 템플릿(Transaction Template)은 스프링 프레임워크에서 제공하는 프로그래밍 방식(명시적)의 트랜잭션 관리 방법 중 하나이다. TransactionTemplate 클래스를 사용하면 선언적 트랜잭션 관리(@Transactional)와 달리, 코드 내에서 직접 트랜잭션의 시작, 커밋, 롤백을 제어할 수 있다. 이 방식은 트랜잭션 관리를 더 세밀하게 제어할 필요가 있는 복잡한 비즈니스 로직에서 유용하게 사용된다. TransactionTemplate 트랜잭션 템플릿을 적용하려면 템플릿을 제공하는 클래스를 작성해야 하는데, 스프링은 TransactionTemplate 라는 템플릿 클래스를 제공한다...

[Spring DB] 트랜잭션 매니저
Back-End/Spring2024. 2. 29. 00:18[Spring DB] 트랜잭션 매니저

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 애플리케이션 아키텍처 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층은 소프트웨어 설계에서 흔히 사용되는 3계층 아키텍처의 핵심 요소이다. 이 아키텍처는 애플리케이션을 구조화하고 관리하기 위해 계층을 분리함으로써, 유지보수성, 확장성 및 재사용성을 향상시킨다. 프레젠테이션 계층 프레젠테이션 계층은 사용자 인터페이스와 관련된 부분이다. 이 계층은 사용자의 입력을 받아들이고, 사용자에게 데이터를 시각적으로 표현한다. 웹 애플리케이션에서는 HTML, CSS, JavaScript 등을 사용하여 구현되며, 사용자의 요청을 서비스 계층으로 전달하고 결과를 사용자에게 돌려준다. 프레젠테이션 계층에서 서블릿과 HTTP 같..

[Database] 트랜잭션 락(Lock)
데이터베이스/데이터베이스 이론2024. 2. 28. 00:44[Database] 트랜잭션 락(Lock)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 공유 락과 배타락 개념 데이터베이스 락은 동시성 제어를 위해 사용되는 기술이다. 이는 여러 사용자나 애플리케이션이 동시에 데이터베이스에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 필요하다. 데이터베이스 락에는 크게 두 가지 유형이 있다 공유 락(Shared Lock) 배타 락(Exclusive Lock) 공유 락(Shared Lock) 공유 락은 여러 트랜잭션이 동시에 데이터를 읽을 수 있도록 허용하지만, 해당 데이터에 대한 수정은 허용하지 않는다. 이 락은 데이터의 동시 읽기를 가능하게 하여 성능을 향상시키지만, 동시에 데이터를 변경할 수는 없다. 배타 락(Exclusive Lock) 배타 락은 한 ..

image