본문 바로가기

분류 전체보기

(79)
[DB] 트랜잭션 격리 수준(isolation level), Transaction(Spring Transactional, Propagation) 1. Transaction(트랜잭션)에 대한 이해 트랜잭션(Transaction)의 필요성 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생된다면 어떻게 해야 할까? DB의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가져야 하고, 다시 수정 작업이 진행되어야 할 것이다. 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션(Transaction) 이다. 트랜잭션은 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다. 그래서 트랜잭션은 commit으로 성공하거나 rollback으로 실패 이후 취소되어야 한다. 하지만 모든 트랜잭션이 동일한 것은 아니고 속성에 따라 동작 방식을 다르게 해 줄 수 있다. 예를 들어 1개의 새로운 데이터를 추가하는 와중에 에러가 ..
[NETWORK] EJB EJB는 "Enterprise JavaBeans"의 약어로, 서버 측 Java 애플리케이션 개발을 위한 스펙이며, 분산 시스템 환경에서 업무 로직을 처리하기 위한 컴포넌트 모델입니다. EJB는 Java EE(Java Platform, Enterprise Edition) 스펙의 일부로, Java EE 컨테이너 내에서 실행되며, 일반적으로 데이터베이스 연동, 트랜잭션 관리, 보안 등의 기능을 제공합니다. EJB는 Java RMI(Remote Method Invocation) 기술을 사용하여 다른 Java 애플리케이션에서 EJB를 호출할 수 있습니다. EJB는 세 가지 유형이 있습니다. 첫째는 세션(Session) EJB로, 클라이언트와 상호작용하는 비즈니스 로직을 처리합니다. 둘째는 엔티티(Entity) E..
[SPRING] AOP Spring AOP AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. 예를 들어 핵심적인 관점은 비즈니스 로직이 될 수 있고, 부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있다.   AOP는 흩어진 관심사(Crosscutting Concerns)를 모듈화 할 수 있는 프로그래밍 기법이다    이때 예를 들어 클래스 A의 주황색 블록 부분을 수정해야 한다면 클래스 B, C의 주황색 부분도 일일이 찾아 수정해야 한다. 이런 식으로 소스 코드상에서 계속 반복해서 사용되는 부..
[SPRING] BEAN 1. BEAN : Spring에서 POJO(plain, old java object)를 ‘Beans’라고 부른다.Beans는 애플리케이션의 핵심을 이루는 객체이며, Spring IoC(Inversion of Control) 컨테이너에 의해 인스턴스화, 관리, 생성된다.Beans는 우리가 컨테이너에 공급하는 설정 메타 데이터(XML 파일)에 의해 생성된다.컨테이너는 이 메타 데이터를 통해 Bean의 생성, Bean Life Cycle, Bean Dependency(종속성) 등을 알 수 있다.애플리케이션의 객체가 지정되면, 해당 객체는 getBean() 메서드를 통해 가져올 수 있다. 2. Spring Bean 정의 주요 속성class(필수): 정규화된 자바 클래스 이름id: bean의 고유 식별자scope..
[JS] Async, Await, Fetch, PromiseAll async와 await async와 await라는 특별한 문법을 사용하면 프라미스를 좀 더 편하게 사용할 수 있습니다. async 함수 async 키워드부터 알아봅시다. async는 function 앞에 위치합니다. async function fetchData(url) { try { const response = await fetch(url); // API 요청 보내기 const data = await response.json(); // JSON 데이터 파싱하기 return data; // 데이터 반환 } catch (error) { console.log('Error:', error); } } // fetchData 함수 호출하기 fetchData('https://jsonplaceholder.typico..
[Spring] 주석2 (Annotation) @Resource, @Autowired, @Inject, @Qulifier, @Configuration, @PropertySource   @Resource, @Autowired, @Inject, @Qulifier  @Resource@Inject@Autowired의존JavaJavaxSpring사용 가능 위치- 필드- 파라미터가 한 개인 setter- 필드- 생성자- setter- 필드- 생성자- setterBean 검색우선순위이름 -> 타입타입 -> 이름타입 -> 이름Bean 강제 지정@Resource(name="ID")@Inject@Named("ID")@Autowired@Qualifier("ID")Bean 없을 경우예외 발생예외 발생@Autowired(required=false) 처리하면 예외 발생 방지..
[WEB기본] forward vs redirect forward vs redirect 얼핏 보면 forward의 기능이 redirect와 비슷해보인다. 하지만 이 둘은 분명한 차이점이 있다. 1. 리다이렉트는 url 주소가 달라지고, 포워드는 url 주소가 달라지지 않는다. 리다이렉트는 클라이언트가 서버에게 요청을 보내면 서버는 어떠한 일을 처리하고 클라이언트에게 새롭게 요청할 곳을 알려준다. 그래서 리다이렉트의 결과는 실제 실행한 뒤에 url 주소가 달라진다. 반면, 포워드는 클라이언트가 요청을 보냈을 때 서버 쪽에서 혼자 처리하는 것이 아니라 또 다른 back에게 일을 넘기는 것이다. 포워드의 경우 클라이언트는 서버에서 서블릿이 혼자 일을 처리했는지, 다른 서블릿에게 일을 위임했는지 알 필요가 없다. 그래서 포워드가 실행되면 url주소는 바뀌지 않는..
[Spring] ExceptionResolver 스프링에는 HandlerExceptionResolverComposite 이라는 파일에 다음 순서로 ExceptionResolver 들이 등록되어있다. ExceptionHandlerExceptionResolver: 이 예외 해결자는 사용자가 정의한 @ExceptionHandler 메서드를 찾아서 예외를 처리합니다. 따라서 가장 먼저 호출되어 예외가 발생한 경우에 대해 사용자가 정의한 처리 로직을 수행합니다. ResponseStatusExceptionResolver: 이 예외 해결자는 @ResponseStatus 애노테이션이 적용된 예외를 처리합니다. 예외에 해당 애노테이션이 적용되어 있으면 설정된 HTTP 상태 코드와 함께 해당 응답을 반환합니다. 따라서 두 번째로 호출됩니다. DefaultHandlerE..