본문 바로가기

전체

DB 커넥션 풀 이해, 특징 커넥션 풀 이해 1. DB Connection Pool 이란? 커넥션을 관리하는 풀이다. 2. Connection Pool이 왜 나왔을까? 커넥션을 미리 생성해두고 재사용하기 위해서다. 객체 참조로 가져다 씀 매번 새롭게 생성하면 과정도 복잡하고 시간도 많이듬 3. Connection Pool 특징 애플리케이션을 시작하는 시점에 커넥션 풀은 필요한 만큼 커넥션을 미리 확보해서 풀에 보관한다 커넥션 풀에 들어 있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태이기 때문에 언제든지 즉시 SQL을 DB에 전달할 수 있다 커넥션을 모두 사용하고 나면 이제는 커넥션을 종료하는 것이 아니라, 다음에 다시 사용할 수 있도록 해당 커넥션을 그대로 커넥션 풀에 반환하면 된다. 여기서 주의할 점은 커넥션을 종..
JDBC탄생배경 및 한계, 결과, 공부 이유 1. JDBC 공부 이유 로우한 레벨에서 문제가 생겼을때 알고있어야 근본적 문제 해결 가능하다 2. JDBC가 나온 이유? 기존에는 각 디비가 바뀌면 이용하는 코드(디비 연결, SQL전달, 응답)도 바뀌지만 이를 해결 JDBC는 표준인터페이스다. 어플리케이션은 JDBC인터페이스에만 의존하면 db가 변경되어도 구현체만 바꾸어 끼면 코드 변경 필요 없다. 3. JDBC 한계 및 결과 디비 연결, SQL전달, 응답하는 로직이 반복, 복잡 SQL만 직접 작성하면 나머지 번거로운 일은 없애주는 SQL Mapper 가 등장 그런데 반복적인 SQL을 직접 작성하지 않고 싶었고 디비 마다 일부 다른 SQL을 작성해야 하는 번거로움을 없애고 싶음 ORM이 대신 SQL을 동적으로 만들어 실행 > JPA 나옴 SQL Map..
SQL Mapper VS ORM(JPA) 1. JDBC의 문제점 JDBC는 1997년에 출시될 정도로 오래된 기술이고, 사용하는 방법도 복잡하다. 그래서 최근에는 JDBC를 직접 사용하기 보다는 JDBC를 편리하게 사용하는 다양한 기술이 나옴. 대표적으로 SQL Mapper와 ORM 기술로 나눌 수 있다. 2. SQL Mapper JDBC를 편리하게 사용하도록 도와준다. SQL 응답 결과를 객체로 편리하게 변환해준다. JDBC의 반복 코드를 제거해준다 단점은 개발자가 SQL을 직접 작성해야한다. 정리하면 SQL만 직접 작성하면 나머지 번거로운 일은 SQL Mapper가 대신 해결해준다 대표 기술: 스프링 JdbcTemplate, MyBatis 3. ORM 기술 ORM은 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다. 이 기술 덕분에 개..
JDBC개념, 탄생배경, 한계점 1. 애플리케이션 서버와 DB의 일반적인 사용법의 문제점 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함께 변경해야 한다 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야한다 2. JDBC개념과 나온 이유는? 위 1번과 같은 문제를 해결하기 위해 JDBC라는 표준 인터페이스가 나왔다. JDBC(Java Database Connectivity) : 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다 애플리케이션 로직은 이제 JDBC 표준 인터페이스에만 의존한다. 따라서 데이터베이스를 다른 종류의 데이터베이스로 변경하고 싶으면 JDBC 구현 라이브러리만 변경하면 된다 JDBC 드라이..
인터페이스 개념과 사용이유(feat. 상속 vs 구현) 1. 인터페이스 인터페이스의 메서드는 public abstract가 포함되었다고 간주된다. 인터페이스는 다중 구현(다중 상속)을 지원한다. 인터페이스에서 멤버 변수는 public , static , final 이 모두 포함되었다고 간주된다 클래스 상속 관계는 UML에서 실선을 사용하지만, 인터페이스 구현(상속) 관계는 UML에서 점선을 사용한다. 2. 상속 vs 구현 부모 클래스의 기능을 자식 클래스가 상속 받을 때, 클래스는 상속 받는다고 표 하지만, 부모 인터페이스의 기능을 자식이 상속 받을 때는 인터페이스를 구현한다고 표현한다 상속은 이름그대로 부모의 기능을 물려 받는 것이 목적이다. 하지만 인터페이스는 모든 메서드가 추상 메서드이다. 따라서 물려받을수 있는 기능이 없고, 오히려 인터페이스에 정의한..
추상클래스, 메소드 특징 abstract 1. 추상클래스 abstract 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 추상 클래스라 한다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다. 직접 인스턴스를 생성하지 못하는 제약이 추가된 것이다. 실수로라도 인스턴스를 생성할 문제를 근본적으로 방지해준다. 대신에 상속을 목적으로 사용되고, 부모 클래스 역할을 담당한다 추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다 2. 추상메서드 부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에 정의할 수 있다.이것을추상 메서드라 한다 추상 메서드는 이름 그대로 추상적인 개념을 제공하는 메서드이다. 따라서 실체가 존재하지 않고, 메서드 ..
다형성 다형성 다형성은 객체지향 프로그래밍의 꽃이라 불린다. 다형성(Polymorphism)은 이름 그대로 "다양한 형태", "여러 형태"를 를 뜻한다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다.
컴파일 오류 vs 런타임 오류 1. 컴파일 오류 컴파일 오류는 변수명 오타, 잘못된 클래스 이름 사용등 자바 프로그램을 실행하기 전에 발생하는 오류이다. 이런 오류는 IDE에서 즉시 확인할 수 있기 때문에 안전하고 좋은 오류이다. 2. 런타임 오류 반면에 런타임 오류는 이름 그대로 프로그램이 실행되고 있는 시점에 발생하는 오류이다. 런타임 오류는 매우 안좋은 오류이다. 왜냐하면 보통 고객이 해당 프로그램을 실행하는 도중에 발생하기 때문이다.