자바빈 (Java bean)
- Java 프로그래밍 언어에서 사용되는 객체지향 기법
- Java Bean은 특정한 규칙을 따라 작성된 클래스로, 데이터를 저장하고 관리하는 용도로 사용된다.
- 클래스의 프로퍼티(속성)를 정의하고 관리하는 getter/setter 메소드를 가지고 있으며, 일반적으로 생성자를 가진다.
- 일반적으로 serializable 인터페이스를 구현하여 객체를 직렬화할 수 있도록 한다.
- 주로 웹 개발에서 폼의 입력 값을 저장하고 전달하는데 사용된다.
접근제한자
클래스나 메서드를 생성할 때 앞에 붙는 public은 접근 제한자를 의미한다. (소문자로 작성)
< 접근 제한자 종류 >
private - 같은 클래스 안에서만 사용 가능
public - 다른 클래스에서도 사용할 수 있음(공용)
default(지정 X) - 같은 패키지 안에서만 사용 가능
1. 메인 클래스에서 메뉴 생성(틀) -> 메인에서는 다른 클래스를 가져와서 사용
2. 필드+자바빈 만드는 클래스 생성 (접근제한자 private로 필드 생성 후 getter, setter)
3. (불러온 파일) 데이터 관리하는 메서드 모아둔 클래스 생성 DAO(DataBase Access Object)
<필드관리 클래스(getter&setter 자바빈 생성)>
package ex25;
public class Address {
private String no;
private String name;
private String address;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
- private 필드 작성 후 마우스 우클릭 - 소스 - getter setter 메서드 생성 - 전체 필드 선택
** 메서드 생성 시 get, set뒤에 자동으로 변수명 첫 글자가 대문자로 바뀜
getter
- setter로 입력받은 값을 return해주는 메서드로. get필드변수(매개변수) 형태이다. **매개변수는 받지 않음
- 값을 사용할 때 호출하며 형태는. getNo()와 같이 쓴다
위 필드로 예를 들면
Address클래스로 생성한 변수 뒤에. getNo()를 붙여 setter로 받은 번호 데이터 출력
(Address a = new Address) -> a.getNo( ) -> get뒤에는 Address클래스에서 생성한 필드의 변수이다.
setter
- setter는 값 넣을 때 쓰는 메서드로 .set필드변수(매개변수) 형태이다. **매개변수를 받는다.
- set메서드로 넣은 값이 해당 필드에 입력되어 저장됨 -> 필드별로 set메서드가 생성되었기 때문
* 안에 데이터는 next메서드로 입력받아 넣을 수도 있다.
< 데이터관리 클래스 > DAO
- 보통 파일의 용도를 알려주기 위해 클래스 명을 필드클래스+DAO로 작성한다
1. File메서드로 새 파일 생성한 뒤 불러올 파일의 경로를 작성한다
-> File 변수명 = new File("경로");
** 메모장 파일을 불러올 때 인코딩을 ANSI로 저장한 뒤 불러와야 한글이 깨지지 않는다.
2. 각 데이터를 관리할 메서드를 생성한다. return값이 있는 메서드면 형식 지정 / 없으면 void를 쓴다
**리턴값이 있는 메서드 안에는 return값을 아래에 작성해줘야 함! -> 맨 아래가 아니면 오류 난다.
DAO 클래스 -> 주소 목록 생성하는 list메서드
package ex25;
import java.io.*;
import java.util.ArrayList;
public class AddressDAO {
File file = new File("c:/workspaceJava/address.txt"); //파일 가져오기
public ArrayList<Address> list(){
ArrayList<Address> array = new ArrayList<Address>();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
while((line=reader.readLine())!=null) {
String[] items = line.split(",");
Address vo = new Address();
vo.setNo(items[0]);
vo.setName(items[1]);
vo.setAddress(items[2]);
array.add(vo);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return array;
}
1. 목록을 받아올 거라 return값 ArrayList의 Address클래스의 데이터 받는 list 메서드 생성
**ArrayList< > - 꺽쇠 안에 클래스 타입 지정 안 해주면 전체 배열을 읽어온다.
2. return값이 없으면 오류 나기 때문에 ArrayList클래스로 배열 객체 array 생성한 뒤에 맨 아래에 return array작성해 준다.
3. 파일을 읽어오기 위해서는 버퍼 리더기가 필요해서 BufferReader 클래스로 reader 리더기 객체 생성해 파일을 담아준다.
** new FileReader()는 Java.io에서 제공하는 기본 생성자임
4. 버퍼를 사용하려면 오류를 판별해 주는 try ~ catch문에 담아줘야 한다. (짝꿍)
5. 처음에 생성하면 catch(FileNotFound Exception e)과 같이 exception 앞에 오류 경우를 자동으로 부여해 주는데 이걸 지워줘야 전체 오류를 처리해 줄 수 있다. -> 안 지우면 File Reader 오류남.
6. 저장한 데이터를 한 줄씩 읽기 위해 String line = "";으로 초기화 값 생성
7. while문으로 line = reader.readLine() 이 null이 아닌 경우(true) 데이터를 한줄씩 읽어 값을 담아준다.
- readLine( ) 메서드는 버퍼에 저장된 데이터를 한 줄씩 읽어 주며 이 데이터는 line에 저장된다.
8. Address 클래스의 get&set 메서드 사용하기 위해 & 해당 필드로 데이터 저장해 주기 위해 객체 vo객체 생성해 준다.
-객체 생성은 while문 안에다 작성해 줘야 목록이 전체 출력된다.(객체 생성과 데이터 삽입을 같이 반복)
-보통 vo는 value object라고 해서 값이 들어있는 객체라는 뜻임
9. line에 들어간 데이터는 , (쉼표)로 구분되어 있어 String타입 배열[ ] items를 생성한 뒤 split으로 쉼표를 잘라 데이터를 넣어준다.
**. split(" ") : "" 안에 지정한 기호를 기준으로 데이터를 자른다. **인식 못하는 특수문자는 [ ] 대괄호로 감싸주면 됨
- split으로 자른 데이터는 String타입으로 변환되기 때문에 숫자인 경우 Integer.parseInt로 감싸줘야 제대로 인식된다.
10. Address 클래스의 vo 객체에 set 메서드를 사용해 번호(no), 이름(name), 주소(address)를 각각의 items 배열에 담아준다.
- 쉼표 기준으로 자른 각각의 데이터는 items의 각 인덱스에 들어가 있고 그 데이터를 vo의 각 필드에 담아주는 것임
11. array.add(a)로 배열에 담아준다.
12. 버퍼리더기 사용 후 닫아주기 위해 while문 바깥에 reader.close()를 작성한다.
Main 클래스 - while문 안의 switch ~case에서 2번 누르면 주소목록 출력하는 부분
case 2:
ArrayList<Address> array = dao.list();
for(Address a:array) {
System.out.printf("%s\t%s\t%s\n",a.getNo(),a.getName(),a.getAddress());
}
1. 위에서(while문 바깥) AddressDAO 클래스의 dao객체를 생성해 놓는다.
2. dao객체에 만들어둔 list() 메서드를 사용해 각 배열에 저장해 둔 파일 데이터를 담는 array를 생성(Address타입 데이터)
3. for 반복문을 통해 주소 목록을 출력한다
4. (Address a:array) -> array 배열의 데이터를 Address 타입의 a객체에 담아준다.
5. a객체에 get메서드로 저장해 둔 각 필드의 데이터를 호출해서 printf문으로 출력한다.
** split으로 자른 데이터는 string타입이다.
'BE > Java [Servlet , Spring]' 카테고리의 다른 글
Oracle(SQL Developer) & JAVA 상품 주문 관리 프로그램 리뷰 - 1. SQL문 (0) | 2023.01.24 |
---|---|
Oracle (SQL Developer) 테이블 생성 + JAVA 연결 (0) | 2023.01.17 |
Java 차량 관리 프로그램 리뷰 - 클래스 생성하기(필드, 생성자, 메서드 오버로딩) (0) | 2023.01.09 |
Java 배열의 합계 및 최대&최소 값 구하기 (Sum, Max, Min) (0) | 2023.01.09 |
Java 상품 관리 프로그램 리뷰(DecimalFormat, integer parseInt) (0) | 2023.01.08 |