오라클 실행 & 코드 작성
1. Sql 실행
-- 샘플 테이블 생성
create table goods(
code varchar2(100) primary key,
name varchar2(100),
manufacture varchar2(100),
price number(10));
-- 샘플 데이터 입력
insert into goods(code, name, manufacture, price)
values('001', '구아바', '칠레', 5000);
-- 샘플 데이터 조회
select * from goods;
-- 작업 내용 데이터베이스 반영
commit;
2. domain.Good 클래스: 테이블의 데이터를 표현하는 VO(Value Object) 클래스
package domain;
public class Good {
//데이터 저장 변수, private: 객체가 사용 X
private String code;
private String name;
private String manufacture;
private int price;
//객체가 변수 사용하게 해주는 메소드
//일반변수 동기화 제어 X -> 메소드 가능
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getManufacture() {
return manufacture;
}
public void setManufacture(String manufacture) {
this.manufacture = manufacture;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
//변수 값을 빠르게 확인 메소드
//Object 클래스의 메소드라 모든 클래스에 존재
//재정의 하지 않으면 클래스 이름과 hashcode 리턴
//출력하는 메소드에 객체의 이름만 대입하면 자동 호출
@Override
public String toString() {
return "Good [code=" + code + ", name=" + name + ", manufacture=" + manufacture + ", price=" + price + "]";
}
}
3. dao.GoodDao 클래스: Goods 테이블의 데이터를 조작하는 클래스, 하나의 데이터를 가져오는 메소드 생성
=> DB 접속 객체는 동시에 작업 불가능
=> 동시에 2개 이상의 객체가 존재할 필요가 없는 클래스의 경우, 싱글톤 패턴으로 디자인
package dao;
public class GoodDao {
//싱글톤을 만들기 위한 코드
private static GoodDao goodDao;
public GoodDao() {}
public static GoodDao sharedInstance() {
if(goodDao==null) {
goodDao=new GoodDao();
}
return goodDao;
}
}
* 싱글톤 패턴
인스턴스가 사용될 때에 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일 인스턴스를 사용하게끔 하는 것이 기본 전략이다. 프로그램상에서 동일한 커넥션 객체를 만든다던지, 하나만 사용되야하는 객체를 만들때 매우 유용하다
출처: https://blog.seotory.com/post/2016/03/java-singleton-pattern
* 클래스, 객체, 인스턴스
클래스와 인스턴스는 설계도와 제품이라고 설명했다. 그럼 객체는 클래스일까 인스턴스일까? 다소 논란이 있지만 일반적으로 설계도인 클래스가 구체적인 실체인 인스턴스가 되었을 때 객체라고 부른다.
4. main.Main 클래스: 해시코드 출력, 생성자 이용, 싱글톤 패턴의 메소드 이용
package main;
import dao.GoodDao;
public class Main {
//Java 응용 프로그램의 entry point(진입점)
//Java 응용 프로그램 실행 시 main 메소드 호출
public static void main(String[] args) {
//생성자 이용-> 객체 생성 -> 호출 때마다 새로 만들기
//클라이언트 프로그램을 만들 때 주로 이용
//dao.GoodDao를 import 해야 사용 가능
GoodDao dao1 = new GoodDao();
GoodDao dao2 = new GoodDao();
//해시코드(id): 객체를 구별하기 위한 코드
System.out.println("dao1: "+dao1.hashCode());
System.out.println("dao2: "+dao2.hashCode());
//생성자 이용 X -> sharedInstance를 이용한 경우
//한번 만들면 계속 사용 가능
//서버 프로그램을 만들때 주로 이용
GoodDao dao3 = GoodDao.sharedInstance();
GoodDao dao4 = GoodDao.sharedInstance();
System.out.println("dao3: "+dao3.hashCode());
System.out.println("dao4: "+dao4.hashCode());
}
}
=> dao3와 dao4는 동일한 hashcode를 지녔음을 확인 할 수 있다.
'IT > Spring, 스프링(17.04.05~)' 카테고리의 다른 글
3. DB 연동 프로젝트(2) (2번 게시물 이어서) (0) | 2018.04.12 |
---|---|
1. 스프링이란, 다운로드와 설정 방법, 프로젝트 생성 (0) | 2018.04.06 |