public class TestDTO { private String id; private int number; public TestDTO() { } public TestDTO(String id, int number) { super(); this.id = id; this.number = number; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @Override public String toString() { return "TestDTO [id=" + id + ", number=" + number + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + number; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TestDTO other = (TestDTO) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (number != other.number) return false; return true; } }
TestDAO.java
☞ package : model.dao
☞ Test 테이블과 관련된 DB 로직을 처리하는 Data Access Object 클래스
☞ 만약 TestDAO 생성자를 부르면 생성될 때마다 Connection Pool이 만들어진다. 만약 TestDAO를 생성할 때마다 connection pool이 생성되면 여러 사용자가 다른 connection pool에서 같은 id를 조회했을때 다른 결과가 나오는 것(예를 들면 자동차 한 대를 만들때마다 차고지를 한 개 짓는 것과 같음)이 아니라 이미 만들어진 데이터베이스는 하나이기 때문에 1개의 connection pool이 필요하다. 따라서 싱글톤 패턴을 이용해서 유일한 객체를 만들어 여러가지 상황에서 동일한 객체에 접근을 하도록 한다.