의존 자동 주입 의존을 주입할 대상에 @Autowired 애노테이션을 붙인다.@Autowired 애노테이션을 필드나 세터 메서드에 붙이면 스프링은 타입이 일치하는 빈 객체를 찾아서 주입한다.자동 주입 가능한 빈이 두 개 이상이면 @Qualifier 애노테이션 이용해서 한정한다.빈 설정에 @Qualifier 애노테이션이 없으면 빈의 이름을 한정자로 지정한다. 컴포넌트 스캔스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능컴포넌트 스캔 대상 애노테이션@Component@Controller@Service@Repository@Aspect@Configuration 빈의 범위를 프로토타입으로 지정하면 빈 객체를 구할 때마다 매번 새로운 객체 생성@Scope("prototype")프로토타입 범위 빈 사용할 때에..
JPA 탄생 배경 SQL 중심적인 개발의 문제점 코드의 반복, SQL에 의존적인 개발 SQL 확인 전까지는 엔티티를 신뢰하기 어려움 (객체들을 서로 join을 통해 계속 묶어줘야 함, NULL값 발생 가능) ORM으로 그 문제를 해결하자! (MyBatis, JPA 등) MyBatis의 한계 결국 쿼리를 만드는 건 개발자 Oracle을 쓰다가 MySQL을 쓰는 상황 등의 발생 시 쿼리 수정해야 함 JPA 장점 SQL 중심적인 개발에서 객체 중심으로의 개발 생산성, 유지보수 필드 추가 시 SQL은 JPA가 알아서 처리 패러다임의 불일치 해결 데이터 접근 추상화와 벤더 독립성 vendor: 여기서는 DB 제품 등을 의미 (Oracle, MySQL 등) 일관성 유지 (표준화) JPA 기초 객체 매핑하기 @Ent..
JPA 이용 기본적인 DB 생성 확인 // MainApp.java package exam; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class MainApp { public static void main(String[] args) { System.out.println("** JPA 시작"); // 인수 unitName: 대소문자 구분 EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPAProject"); } } // Customer.java package exam; import javax.persistence...
Transaction 트랜잭션은 DB와 Java 언어 데이터를 주고받는 과정에 원자성을 부여하는 수단 어떤 작업 프로세스를 하나로 묶어 실행 중인 하나의 작업이라도 실패하면 모두 실패처리하고, 전체 작업이 성공하면 성공처리 ex. 결제와 동시에 좌석 할당 결제 수행 + 결제내역 저장 + 구매내역 저장 Transaction ACID 원자성 Atomicity 트랜잭션은 하나 이상의 동작을 논리적으로 한 개의 작업단위로 묶는다. 원자성은 트랜잭션 범위에 있는 모든 동작이 모두 실행되거나 모두 실행 취소됨을 보장하는 것 일관성 Consistency 트랜잭션이 종료되면 시스템은 비즈니스에서 기대하는 상태가 된다. 예를 들어, 서적 구매 트랜잭션이 성공적으로 실행되면 결제 내역, 구매 내역, 잔고 정보가 비즈니스에..
예외처리 @RequestMapping 메서드는 모든 타입의 예외를 발생시킬 수 있다. 예외를 발생시킬 경우 웹 브라우저는 500 응답코드와 함께 서블릿 컨테이너가 출력한 에러 페이지가 출력된다. 예외 타입에 따라 스프링 MVC와 연동된 뷰를 이용해서 에러 페이지를 출력할 수 있다. 예외 발생시 사용자에게 보여줄 특정 페이지를 만들어 출력한다. (공통의 예외를 한 페이지에서 처리 가능) 처리 방법 @ExceptionHandler 어노테이션을 이용한 예외처리 @ExceptionHandler 메소드를 만든 Controller 영역에서만 유효함 @ExceptionHandler(ArrayIndexOutOfBoundsException.class) public String arithmetic(ArrayIndexOut..
@Autowired: 객체 주입 xml에서 ref="" @Value("Spring 01"): 기본형 주입 + String xml에서 value=""