본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 29일차 -48

by oncerun 2020. 4. 9.
반응형

1.CRUD 

현업에서 자주 사용되는 용어로써  기본적인 데이터 처리 기능을 일컫는 말입니다.

 "테이블"은 "표", "행"은 "레코드", "열"은 "항목"이라고 부르기도 한다.

 

C : create  데이터 생성

 

RDBMS의 관리 하에 객체를 생성하는 명령입니다.

ex > create Table table_name(

 column_name dataType []

);

 

R : read/ retrieve 데이터 읽기

 

데이터베이스의 테이블에서 데이터를 추출하기 위한 명령어이다.

ex > select column from table;

 

U : update 데이터 수정, 갱신

 

테이블이나 뷰에서 한 개 이상의 행을 변경한다.

ex > update table_NAME set column_NAME='values ' where 조건;

 

D : delete 데이터 삭제

 

테이블에서 한 개 이상의 행을 삭제합니다. *조건 중요

ex > delete table where 조건;

 

 

 

2. 자바를 이용해 데이터베이스에서 값을 가져와 콘솔에 출력하기.

 

어제와 차이점은 우리는 SQL실행문인 Statement는 콘솔의 입력값을 SQL문에 사용할 때 '에 대해서 문자열을 더해주는 불편한 작업이 존재했습니다.

 

String sql = String.format("SELECT * FROM MEMBER WHERE ID = '%s'", search) ;

혹은

String sql = "SELECT * FROM MEMBER WHERE ID = '+search+"'"" ;

또 여러 가지 방법이 존재하겠지만 좀 더 개선된 방법을 배웠는데

String sql = "SELECT * FROM MEMBER WHERE ID=?";
PreparedStatement st = con.prepareStatement(sql);
st.setString(1, id);

PreparedStatement를 사용하는 것입니다. PreparedStatement는  매개변수로 sql문을 직접 받습니다. 또한 조건식에 들어갈 조건에 대해?라는 기호를 사용하는데 기존에 변수를 넣었던 부분에?라는 기호를 사용합니다.

setString은?라는 공간에 데이터를 넣는 부분입니다.

인덱스의 숫자는? 의 인덱스라고 생각하면 되고 id는 데이터의 저장 값을 입력해주면 됩니다.

 

3. 코드의 분리

데이터베이스의 칼럼 값을 저장할 클래스와

콘솔 창의 데이터 입력하는 main클래스와

칼럼 값을 가지고 서비스를 제공하는 service클래스로써 분할.

 

보통 구현 서비스는 하나의 메인에 종속적으로 연결되지 않는데 그 이유는 서비스를 분리시켜 재사용과 의존성을 낮추기 위함이다. 

클라이언트(사용자) - 서블릿(MAIN) - 구현 서비스(SERVICE) - DB(DATEBASE) 순으로 요청과 응답이 된다고 간략하게 생각한다.

 

boolean next( )
커서 다음에 레코드가 있는지 판단하여 없으면 false, 있으면 true를 반환하 다음에 커서를 다음 레코드로 이동 시킵니다.

package ex01.basic;

import java.sql.SQLException;
import java.util.Scanner;

import ex01.basic.service.MemberService;
import ex01.basic.entity.*;
public class Program2 {

   public static void main(String[] args) throws SQLException {
         //BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
         //-=======================================
         Scanner scan = new Scanner(System.in);
         
         System.out.print("id 입력: ");
         String id = scan.nextLine();
         // 껍데기...
         //======================================
         
         MemberService service = new MemberService();
         Member member = service.getMemberById(id);
         System.out.println(member);
   }

}

MEMBER

 

package ex01.basic.entity;

import java.util.Date;

public class Member {
	private String id;
	private String pwd;
	private String name;
	private String gender;
	private String birthday;
	private String phone;
	private String email;
	private Date regdate;
	
	public Member() {
		
	}

	public Member(String id, String pwd, String name, String gender, String birthday, String phone, String email,
			Date regdate) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.gender = gender;
		this.birthday = birthday;
		this.phone = phone;
		this.email = email;
		this.regdate = regdate;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getRegdate() {
		return regdate;
	}

	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}

	//
	@Override
	public String toString() {
		return "Member [id=" + id + ", pwd=" + pwd + ", name=" + name + ", gender=" + gender + ", birthday=" + birthday
        + ", phone=" + phone + ", email=" + email + ", regdate=" + regdate + "]";
	}
	
	
}

Member service

package ex01.basic.service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import ex01.basic.entity.Member;

public class MemberService {

	public Member getMemberById(String id) throws SQLException {
		Member member = null;

		// 서비스 ===============================
		String url = "jdbc:oracle:thin:@192.168.19:1521/xepdb1";
		String sql = "SELECT * FROM MEMBER WHERE ID=?";

		Connection con = DriverManager.getConnection(url, "lec", "111");
		PreparedStatement st = con.prepareStatement(sql);
		st.setString(1, id);

		ResultSet rs = st.executeQuery();

		if (rs.next()) {
			member = new Member();
			member.setId(rs.getString("ID"));
			member.setPwd(rs.getString("PWD"));
			member.setName(rs.getString("NAME"));
			member.setGender(rs.getString("GENDER"));
			member.setBirthday(rs.getString("BIRTHDAY"));
			member.setEmail(rs.getString("EMAIL"));
			member.setPhone(rs.getString("PHONE"));
			member.setRegdate(rs.getDate("REGDATE"));
		}

		rs.close();
		st.close();
		con.close();
		return member;
	}

}

여기까지 db을 조작하기 위한 세팅인데 매번 하기에는 코드량이 너무 많아 더 편하게 할 수 있는 MyBatis라는 프레임 워크를 나중에 배울 것 같다.

 

반응형

댓글