728x90
파일 구성
Control : Controller.java
Model : PersonDTO.java , PersonDAO.java
View : InputForm.java, MainView.java, UpForm.java
Conn 폴더 : conn.properties
MODEL
- 테이블 이름, 혹은 조인된 도메인명 오른쪽에 역할 명시
PersonDTO
: 속성 정의, 자바빈즈 역할
public Person(int no, String name, int age, String job) {
this.no = no;
this.name = name;
this.age = age;
this.job = job;
}
PersonDAO
: DB 관련된 일 전담
- CRUD 작성 (CREATE, READ, UPDATE, DELETE)
- Connection 작업
- Statement stmt 객체생성 (sql 작성, 실행)
ResultSet rs 객체생성 (조회된 결과 저장)
rs.next() rs.get자료형('컬럼명') - DB자원반환 (Connection 반환)
PersonDAO:: DB Connect , disConnect
private void connect() {
try {
conn = DriverManager.getConnection(pro.getProperty("url"),pro);
} catch (SQLException e) {
e.printStackTrace();
}
}//connect
private void disConnect() {
try {
//연결끊기(DB자원반환)
if(conn != null)conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}//disconnect
}
PersonDAO:: 객체생성
Connection conn;
Statement stmt;
Properties pro;
public PersonDAO() {
try {
pro = new Properties(); //속성 무
pro.load(new FileReader("conn/conn.properties"));//속성 4개 적재
Class.forName(pro.getProperty("driver"));
} catch (Exception e) {
e.printStackTrace();
}
}//생성자
con.properties 파일
- conn.properties : DB 연결정보 저장
# conn/conn.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=아이디
password=비번
PersonDAO:: SELECT
public Person select(int no) {// 한 개의 Person정보 얻어오기 --> 수정폼
connect();
try {
stmt = conn.createStatement();
String sql = "SELECT name,age,job FROM person WHERE no =" + no;
rs = stmt.executeQuery(sql);
if (rs.next()) {
// rs.get~()
Person p = new Person(no, rs.getString("name"), rs.getInt("age"), rs.getString("job"));
return p;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
disConnect();
}
return null;
}// select
public ArrayList<Person> selectAll() {// 모든 Person 정보 얻어오기
connect();
ArrayList<Person> list = new ArrayList<Person>();
try {
stmt = conn.createStatement();
String sql = "SELECT no,name,age,job FROM person ORDER BY no";
rs = stmt.executeQuery(sql);
while (rs.next()) {
/*
* String name = rs.getString("name"); int age = rs.getInt("age"); String job =
* rs.getString("job"); Person person = new Person(0,name,age,job);
* list.add(person);
*/
list.add(new Person(rs.getInt("no"), rs.getString("name"), rs.getInt("age")
, rs.getString("job")));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
disConnect();
}
return list;
}// ArrayList
PersonDAO:: INSERT
public boolean insert(자바빈즈) {}
public boolean insert(Person p) {}
public void insert(Person p) {}
public boolean insert(Person p) {
connect();
try {
stmt = conn.createStatement();
String sql="insert into person (no,name,age,job) values "
//+ "(1, '홍길동' , 13 , '학생' )";
+ "(person_seq.nextval, '"+p.getName()+"' , "+p.getAge()
+" , '"+p.getJob()+"' )";
System.out.println("추가SQL==> "+ sql);
stmt.executeUpdate(sql);//DB에게 입력요청
return true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
disconnect();
}
return false;
}//insert
PersonDAO:: UPDATE
public boolean update(Person p) {
connect();
try {
stmt = conn.createStatement();
String sql = "UPDATE person SET age=" + p.getAge() + ", job='"
+ p.getJob() + "' WHERE no="+p.getNo();
System.out.println("수정 sql="+sql);
int t = stmt.executeUpdate(sql);
System.out.println("수정행:"+t);
if(t==1) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
disConnect();
}
return false;
}// update
VIEW
InputForm.java
MainView.java
UpForm.java
Controller
: 전체 프로그램에 대한 흐름 제어 역할
- 사용자 요청 분석 (예: 어떤 버튼을 눌렀는지)
- 사용자 입력 데이터 얻어오기 (예: 입력폼 또는 수정폼을 통해 입력된 데이터)
- ★모델객체생성(예: PersonDAO)
- 메소드호출
- 결과값 (리턴값) 얻기, 저장, 판단
- 페이지(뷰) 호출 (예: 메인(JTable) ----> 입력폼)
- 선택사항) 유효성 검사(valid check)
-
사용자가 입력한 데이터에 대한.
-
데이터베이스에서도 데이터 무결성을 위한 유효성 검사
public void actionPerformed(ActionEvent e) { Object ob = e.getSource();//action이벤트를 발생시킨 이벤트 소스의 주소 얻기 if(ob==mainView.bt_insert) {//1.메인뷰 : 입력버튼 ==> 분석: 입력폼요청!! //4.메인뷰 ---> 입력폼 이동!! mainView.setVisible(false); form.setVisible(true); }else if(ob==form.bt_submit) {//1.입력폼: 입력버튼 ==> 분석: DB입력 요청!! //2. 입력데이터 얻기 String name = form.tf_name.getText(); String age = form.tf_age.getText(); String job = form.tf_job.getText(); //세개의 변수를 p변수로 정의하기(한개의 변수명으로 정의하기) Person p = new Person(0, name, Integer.parseInt(age), job); //3. 모델 객체생성 PersonDAO dao = new PersonDAO(); dao.insert(p); } }//actionPerformed
'Web develop > JDBC_XML' 카테고리의 다른 글
[JDBC] JDBC 프로그래밍 (0) | 2019.07.10 |
---|---|
[JDBC] Swing에서 중복아이디 체크하기 (PrepareStatement 사용) (0) | 2019.06.19 |
[JDBC] Prepared Statement 사용법 및 사용예제 (0) | 2019.06.19 |
[JDBC] Properties 객체 사용방법(저장, 출력, 데이터얻기) (0) | 2019.06.18 |
[JDBC] JDBC 관련클래스, 프로그래밍 순서 (Connection, Statement, ResultSet) (0) | 2019.06.18 |