@Autowired : 이 어노테이션은 Java 기반의 Spring 프레임워크에서 객체 간의 의존성을 자동으로 주입하는 역할을 한다. 이는 코드의 가독성과 명시성을 향상시키는 데 중요한 역할을 한다. 또한, 객체 간의 결합도를 줄이고 코드의 유지 보수와 테스트를 용이하게 하는 이점을 제공한다. 이는 Spring 프레임워크의 핵심적인 기능 중 하나로, 이를 통해 개발자들은 코드의 유연성을 향상시키는데 도움을 받을 수 있다.
Spring IoC(Inversion of Control) : Spring IoC 컨테이너는 클래스의 생성, 초기화, 주입 등의 라이프사이클을 관리하는 역할을 맡는다. 이 관리 대상이 되는 클래스들을 우리는 '빈(Bean)' 클래스라 부른다. 이 빈 클래스들은 Spring 프레임워크에서 직접 관리되며, Spring IoC 컨테이너에 의해 라이프사이클이 관리된다. 이로 인해, 개발자들은 객체의 라이프사이클을 신경 쓸 필요 없이 비즈니스 로직에만 집중할 수 있다.
Bean : 스프링에서 Bean은 스프링이 직접 관리하는 객체를 의미합니다. Spring이 관리하는 ApplicationContext 내에서 등록되어 있으며, 이는 Spring IoC 컨테이너를 통해 관리된다.
JPA와 Hibernate : 만약 JPA가 없다면, 개발자들은 JDBC를 이용해서 SQL을 일일이 실행시켜야 하는데 이는 매우 비효율적인 작업이며, 이를 해결하기 위해 JPA와 Hibernate와 같은 ORM 도구들이 개발되었다. JPA는 ORM의 일종이며, ORM은 객체 지향 프로그래밍 언어를 이용해 자동으로 데이터베이스를 관리하는 기술을 의미한다. Hibernate는 JPA 인터페이스의 구현체 중 하나로, JPA의 모든 기능을 지원하고, 다양한 데이터베이스에서 사용 가능하다. Hibernate는 SQL문을 직접 작성하지 않고, 객체와 데이터베이스 간의 매핑을 자동으로 처리하는 역할을 한다. 이렇게 함으로써 개발 생산성이 크게 향상된다.