All Category562 [Spring DB] 예외의 이해 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 예외 계층과 체크, 언체크 예외 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다. 이 예외를 잡으면 Error 까지 잡기 때문에 Exception 예외부터 잡는다. Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 개발자는 이 예외를 잡을 필요가 없다. Exception: 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. 이 예외를 상속받으면 체크 예외가 된다. Exception과 그.. Java Category/Spring 2024. 3. 4. [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.. Java Category/Spring 2024. 3. 3. [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번호 Java Category/기타 2024. 3. 2. [Spring DB] 트랜잭션 AOP 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 AOP(Aspect-Oriented Programming)는 스프링 프레임워크가 트랜잭션 관리를 위해 제공하는 선언적 트랜잭션 관리 방식이다. 이 방법을 통해 개발자는 비즈니스 로직과 트랜잭션 관리 코드를 분리할 수 있으며, 이로 인해 코드의 가독성과 유지보수성이 크게 향상된다. 스프링에서는 @Transactional 어노테이션을 사용하여 클래스나 메소드 레벨에서 트랜잭션을 선언적으로 관리할 수 있게 한다. 트랜잭션 AOP의 특징은 아래와 같다 @Transactional 어노테이션 사용: 개발자는 트랜잭션을 적용하고자 하는 메소드나 클래스에 @Transactional 어노테이션을 붙인다. 이 어노테이션.. Java Category/Spring 2024. 3. 2. [Spring DB] 트랜잭션 템플릿 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 템플릿(Transaction Template)은 스프링 프레임워크에서 제공하는 프로그래밍 방식(명시적)의 트랜잭션 관리 방법 중 하나이다. TransactionTemplate 클래스를 사용하면 선언적 트랜잭션 관리(@Transactional)와 달리, 코드 내에서 직접 트랜잭션의 시작, 커밋, 롤백을 제어할 수 있다. 이 방식은 트랜잭션 관리를 더 세밀하게 제어할 필요가 있는 복잡한 비즈니스 로직에서 유용하게 사용된다. TransactionTemplate 트랜잭션 템플릿을 적용하려면 템플릿을 제공하는 클래스를 작성해야 하는데, 스프링은 TransactionTemplate 라는 템플릿 클래스를 제공한다... Java Category/Spring 2024. 3. 1. [Spring DB] 트랜잭션 매니저 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 애플리케이션 아키텍처 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층은 소프트웨어 설계에서 흔히 사용되는 3계층 아키텍처의 핵심 요소이다. 이 아키텍처는 애플리케이션을 구조화하고 관리하기 위해 계층을 분리함으로써, 유지보수성, 확장성 및 재사용성을 향상시킨다. 프레젠테이션 계층 프레젠테이션 계층은 사용자 인터페이스와 관련된 부분이다. 이 계층은 사용자의 입력을 받아들이고, 사용자에게 데이터를 시각적으로 표현한다. 웹 애플리케이션에서는 HTML, CSS, JavaScript 등을 사용하여 구현되며, 사용자의 요청을 서비스 계층으로 전달하고 결과를 사용자에게 돌려준다. 프레젠테이션 계층에서 서블릿과 HTTP 같.. Java Category/Spring 2024. 2. 29. [Database] 트랜잭션 락(Lock) 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 공유 락과 배타락 개념 데이터베이스 락은 동시성 제어를 위해 사용되는 기술이다. 이는 여러 사용자나 애플리케이션이 동시에 데이터베이스에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 필요하다. 데이터베이스 락에는 크게 두 가지 유형이 있다 공유 락(Shared Lock) 배타 락(Exclusive Lock) 공유 락(Shared Lock) 공유 락은 여러 트랜잭션이 동시에 데이터를 읽을 수 있도록 허용하지만, 해당 데이터에 대한 수정은 허용하지 않는다. 이 락은 데이터의 동시 읽기를 가능하게 하여 성능을 향상시키지만, 동시에 데이터를 변경할 수는 없다. 배타 락(Exclusive Lock) 배타 락은 한 .. 데이터베이스/데이터베이스 이론 2024. 2. 28. [Database] 트랜잭션 ACID, DB 연결구조와 세션 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션의 기본적인 내용은 아래의 글을 참고 2023.08.20 - [Java Category/Java] - [Java] DB 트랜잭션 처리 [Java] DB 트랜잭션 처리 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 트랜잭션 트랜잭션(transaction)은 기능 처리의 최소 단위를 말한다. 하 rebugs.tistory.com 트랜잭션 ACID ACID 속성 원자성(Atomicity): 트랜잭션 내의 모든 연산은 전부 완료되거나 전부 실행되지 않아야 한다는 원칙이다. 즉, 트랜잭션의 연산 중 하나라도 실패하면, 이미 실행된 모든 연.. 데이터베이스/데이터베이스 이론 2024. 2. 27. [Spring DB] 커넥션풀과 데이터 소스 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 커넥션 풀 개념 커넥션 풀(Connection Pool)은 데이터베이스와의 연결을 재사용할 수 있도록 관리하는 일련의 데이터베이스 연결 집합이다. 애플리케이션의 성능을 향상시키기 위해 사용되며, 여러 사용자나 클라이언트 요청에 대응하여 데이터베이스 연결을 빠르게 제공하는 역할을 한다. 커넥션 풀을 사용하는 주된 이유는 연결 생성과 해제에 드는 비용이 높기 때문이다. 데이터베이스에 연결을 요청할 때, 커넥션 풀에서 미리 생성해 둔 연결 중 하나를 할당받는다. 사용이 끝난 연결은 다시 커넥션 풀로 반환되어, 다음 요청이 있을 때 재사용된다. 이 방식은 데이터베이스 연결을 매번 새로 생성하고 해제하는 것보다 훨씬 효.. Java Category/Spring 2024. 2. 26. [Spring MVC] PRG(Post/Redirect/Get), RedirectAttributes 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. POST, Redirect GET 예를 들어, 상품 등록 폼에서 상품을 저장하고, 상품 상세 페이지로 간다고 가정하면, 아래와 같은 그림이 된다. @GetMapping("/add") //get public String addForm() { return "basic/addForm"; } @PostMapping("/add") //post public String addItem(@ModelAttribute Item item) { itemRepository.save(item); return "basic/item"; } 상품 등록 폼으로 갈때는 GET 요청으로 가고, 상품 저장을 저장하기 위해서는 POST 요청을 해야한.. Java Category/Spring 2024. 2. 25. [Thymeleaf] 타임리프 특징과 기본 사용법 타임리프란? 타임리프(Thymeleaf)는 자바 웹 애플리케이션 개발에 사용되는 모던 서버사이드 Java 템플릿 엔진 중 하나이다. HTML, XML, 텍스트, 자바스크립트, CSS 등 다양한 마크업 파일을 생성할 수 있으며, 주로 웹 애플리케이션에서 동적인 뷰를 생성하는 데 사용된다. 타임리프의 가장 큰 특징 중 하나는 natural templates 을 지원한다는 것으로, 애플리케이션이 실행되지 않는 상태에서도 HTML 파일을 웹 브라우저에서 직접 열어볼 수 있다. 이는 개발 과정을 보다 효율적으로 만들어준다. 타임리프의 주요 특징 네츄럴 템플릿: 타임리프 템플릿은 실행되지 않는 상태에서도 HTML 파일로서 자연스럽게 보여질 수 있어, 디자이너와 개발자 간의 협업을 용이하게 한다. 서버 사이드 렌더링.. Java Category/Thymeleaf 2024. 2. 24. [Spring] 어노테이션 정리 @Component 클래스를 스프링 빈으로 등록하기 위한 일반적인 스테레오타입 어노테이션. 스프링이 관리하는 컴포넌트임을 나타낸다. @Component 어노테이션은 @Repository, @Service, @Controller와 같은 더 구체적인 스테레오타입 어노테이션의 기반으로 작용한다. 이들은 각각 데이터 접근 계층, 비즈니스 로직 계층, 프레젠테이션 계층의 클래스를 나타내는 데 사용되며, @Component의 특수한 형태로 볼 수 있다. 이 구체적인 어노테이션들을 사용함으로써, 개발자는 애플리케이션의 다양한 부분을 더 명확하게 구분할 수 있고, 스프링은 특정 역할을 가진 컴포넌트를 적절히 처리할 수 있다. @ComponentScan 스프링이 @Component 어노테이션이 붙은 클래스를 찾아 빈으로.. Java Category/Spring 2024. 2. 23. 이전 1 2 3 4 5 6 7 ··· 47 다음