D:\C_Lib\ibatis -> ojdbc6
1) 프로젝트 클릭 -> alt+enger -> build path -> Libraries -> add external jars (정리안된 폴더)
-> D:\C_Lib\ibatis -> ojdbc6 가져오기
: 이렇게 하고 export 하면 터진다
2) 프로젝트 적합하게
프로젝트에 lib 폴더 만들고 D:\C_Lib\ibatis -> ojdbc6 복사해서 가져오기
: export하면 같이 export한다 (라이브러리로 등록되지 않은 상태)
경로복사 -> alt+enter -> add library -> user library -> NEW -> 'JDBC' 등록
ADD EXTERNAL JARS -> D:\A_TeachingMaterial\1.BasicJava\workspace\basic_java\lib
: MainClass( 클래스, 메인메서드) -> ViewClass(클래스) -> IService(인터페이스) -> IServiceImpl(클래스) -> IDao(인터페이스) -> IDaoImpl(클래스) -> MemberVo(클래스)
(1) DTO (Data Transfer Object)
: 데이터를 들고 있는 객체, 데이터를 오브젝트로 변환하는 객체
(2) VO (Value Object)
: 값을 위해 쓰는 것, Read-Only 속성
DTO와 VO 모두 데이터를 저장하고 있다는 점이 있지만 프로젝트마다
정의를 다르게 하고 있기 때문에 프로젝트의 정의에 따라 사용하는 것이 좋다.
Statement 와 PreparedStatement의 가장 큰 차이점은 캐시(cache) 사용여부
쿼리의 수행 (3단계)
: 쿼리문장 분석 -> 컴파일 -> 실행 순서로 수행
Statement를 사용하면 매번 쿼리를 수행할 때마다 3단계를 거치게 되고,
PreparedStatement를 처음 한번만 세단계를 거친 후 캐시에 담아 재사용
-> DB에 훨씬 적은 부하를 주며, 성능도 좋다.
(1) Statement
: Statement는 executeQuery()나 executeUpdate()를 실행하는 시점에
매번 컴파일을 하기 때문에 성능상의 이슈가 있다.
(2) PreparedStatement
: 컴파일이 미리 되어있는 녀석, 보통 조건절과 함께 사용되며 재사용
애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리에 할당하고
그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴
생성자가 여러차례 호출되더라도 실제로 생성된 객체는 하나고
최초 생성 이후에 호출된 생성자는 최초에 생성된 객체를 반환한다.
생성자에 접근제어자 private로 선언해서 객체의 생성을 제한하고
메서드를 통해서만 객체를 취득할 수 있다.
*사용하는 이유
: (1) 고정된 메모리의 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에
메모리 낭비를 방지할 수 있다.
: (2) 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의
인스턴스들이 데이터를 공유하기 쉽다.