• 웹서버
    • 소켓
      • 소켓은 네트워크 통신의 끝점을 나타내는 개념
    • TCP통신
      • TCP 통신은 소켓을 통해 이루어지고 IP 주소와 포트 번호로 네트워크 상의 특정 서비스나 애플리케이션과 통신
    • HTTP통신
      • HTTP통신은 TCP 연결 위에서 HTTP 프로토콜을 기반으로 수행
      • HTTP 요청과 응답은 텍스트 기반으로, 클라이언트가 서버에 요청을 보내고 서버가 응답을 보내는 형태
  • JDBC
    • JDBC(Java Database Connectivity)는 자바에서 데이터베이스와의 연결을 관리하고 SQL 쿼리를 실행하기 위한 표준 API
    • 주요 구성 요소
      • DriverManager
        • JDBC 드라이버를 관리하고, 애플리케이션과 드라이버 간의 연결을 설정하는 역할
      • Connection
        • 데이터베이스 연결을 나타내며, SQL 문을 실행하고 트랜잭션을 관리하는 데 사용
      • Statement
        • SQL 문을 실행하고 결과를 얻기 위한 방법을 정의
      • ResultSet
        • SQL 쿼리의 결과를 나타내며, 결과 집합을 반복하고 데이터를 읽는 방법을 제공
    • 단점
      • 직접 SQL 쿼리 작성 및 오타 가능성
      • 예외 처리, 리소스 해제 등의 반복적인 코드가 많이 필요
      • JDBC를 사용하면 SQL 쿼리의 결과를 객체로 수작업으로 매핑. 특히 복잡한 객체를 다룰 때 매우 번거로움
      • 트랜잭션 관리의 수동처리
  • 리플렉션
    • Java 프로그램이 런타임에 클래스, 메서드, 필드 등의 정보를 검사하고 수정할 수 있도록 하는 기능
    • 리플렉션의 주요 기능
      • 클래스 정보를 런타임에 얻을 수 있음 (클래스의 이름, 메서드, 필드 등)
      • 런타임에 메서드를 호출할 수 있음
      • 런타임에 필드에 접근하고 수정할 수 있음
      • 런타임에 객체를 생성할 수 있음
        • 추후 스프링에서 객체 자동생성 활용
  • 어노테이션
    • 자바에서 메타데이터(metadata)를 제공하기 위한 문법 요소
    • 일반적으로, 어노테이션은 런타임 시점에서 동작
    • 어노테이션의 주요 기능
      • 컴파일러에게 정보를 제공
        • 예시) @Override
      • 런타임 시 특정 행동을 유발
        • 예시) @Autowired
    • 사용방법
      • @interface 키워드를 사용하여 정의
        • 해당 인터페이스명을 사용하여 어노테이션 활용
      • @Retention
        • 어노테이션 동작 시점을 지정
        • 일반적으로 런타임시점 설정
      • @Target
        • 어노테이션을 사용하게 될 주체를 정의
        • 필드, 메서드, 생성자 등