-> 자바의 오픈소스 애플리케이션 프레임워크 중 하나로 스프링 기술의 철학은 특성 기술에 종속되지 않고 객체를 관리할 수 있는 프레임워크를 제공하는 것이다.
-> 컨테이너로 자바 객체를 관리하면서 의존성 주입과 제어의 역전을 통해 결합도를 낮추게 된다.
-> 객체간의 의존관계를 미리 설정해두면 스프링 컨테이너가 의존관계를 자동으로 연결해준다. 이렇게 되면 직접 의존하는 객체를 생성하거나 검색해서 가져올 필요가 없어서 결합도가 낮아지는 장점이 있다.
-> 제어권이 사용자에 있지 않고 프레임워크에 있어서, 필요에 따라서 사용자의 코드를 호출하게 된다. 스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너에서 대신 관리하게 된다.
-> 관계형 데이터베이스를 OOP (객체지향프로그래밍) 언어로 변환해주는 기술이다. 그래서 비지니스 코드가 db 테이블에 바로 접근하게 도와준다.
-> 자바 객체와 데이터베이스를 맵핑해주는데, 대표적인 구현체로는 hibernate 가 있다.
-> 비지니스 로직에 집중하고, 객체중심의 개발을 할 수 있게 된다. 메소드를 호출하는 것만으로 쿼리를 수행해서 생산성이 향상되고, 유지보수 비용이 줄어든다. 특정 DB 에 의존하지 않게 된다.
-> 직접 SQL 을 호출하는 것보다 조금 느리고, 복잡한 쿼리같은 것은 메소드로 처리가 힘들다는 단점이 있다.