본문 바로가기

STUDY/국비과정

[JAVA 웹 개발 공부] 국비지원 46일차 - 이진데이터, BLOB, Path 클래스, Files 클래스, 베이스64 인코딩, 외부 데이터베이스 접근

BLOB

 

Binary Large Object 의 약어이다. 이진 데이터를 저장하기 위한 MySQL 의 필드 유형이라고 한다.
이미지의 경우 이진 데이터로 이루어져 있기 때문에 BLOB 유형의 데이터로 만들어서, MySQL 데이터베이스에 저장할 수 있다.

MySQL 에는 4가지의 BLOB 타입이 있다.
*BLOB
*TINYBLOB
*MEDIUMBLOB
*LONGBLOB

 

 

Path 클래스

 

특정경로나타내는 객체이며, 경로 표시를 다양하게 나타낼 수 있다.

File file = new File("D:\\Java\\춘식\\춘식16.png");
Path path = Paths.get("D:\\Java\\춘식\\춘식16.png");

 

 

Files 클래스

 

파일관련작업들을 메소드화 시켜서 글자를 쓰거나 읽어오거나 이진데이터를 읽거나 출력하는것이 다 가능하다.
파일 객체와 비슷하게 경로를 나타낼수있는 path객체가 필요했고, paths 클래스로 표현했다. 
텍스트로 표현된 모든 내용을 읽어오는 메소드 readAllLines 패스객체를 넘겨주면 모든 텍스트를 한줄씩 읽어 리스트의 한행으로 추가시켜 반환해준다.
이진데이터를 모두 읽을때는 readAllBytes메소드를 사용하며, 출력은 write메소드를 사용한다.

// 모든 텍스트를 읽어, 각 행을 List의 원소로 반환함.
List<String> fileContent = Files.readAllLines(Paths.get("텍스트파일경로")); 
// list의 String을 각 행으로 출력해줌.
Files.write(Paths.get("출력경로"), fileContent); 

// byte[]로 파일 내용 모두 읽어옴.
Files.readAllBytes(path); 
// 해당 경로에 byte[] 모든 내용 출력
Files.write(경로, 바이트배열);

 

 

Base64

 

이진데이터는 깨진글자로 보이는데 이것을 베이스64 인코딩하여 그의 치환되는 영문자로 표현을 하면 파일 내용을 영문자로만 표현이 가능하다.

*encoding(인코딩) : 원본을 특정한 자료로 변환시킴

*decoding(디코딩) : 변환된 자료를 역순으로 작업하면 원본을 그대로 얻을 수 있는 작업

 

String line = "문자열원본";
System.out.println(Arrays.toString(line.getBytes()));
String encoded = Base64.getEncoder().encodeToString(line.getBytes());
System.out.println(encoded);

byte[] decode = Base64.getDecoder().decode(encoded);
System.out.println("디코딩된 원본: " + new String(decode));

// Console
[-21, -84, -72, -20, -98, -112, -20, -105, -76, -20, -101, -112, -21, -77, -72]
66y47J6Q7Je07JuQ67O4
디코딩된 원본: 문자열원본

 

Base64 인코딩 작업도 널리쓰이는 포맷중 하나로 많이 쓰인다.
원본자료를 문자열화 시키는데 이차원정보로 표현이 불가능한 바이너리 정보를 문자열화 시킬수 있고, 해석을 할때 같은방식으로 하면 원본을 얻을 수 있으니 전송에 유리하다.
Base64인코딩하려면 getEncoder()라는 메소드를 통해 인코더 객체로 만들어지고, encodeToString()으로 문자열화 시키면 된다. 
필요한 곳으로 전송을 하게된다면 decoding작업을 해주면된다.
decoding작업은 getDecoder()로 디코더 객체를 얻어내고 decode()로 원본자료를 얻어낸다. 

이미지 자료를 Base64로 인코더 시켜 하나의 row로써 db에 추가하고 필요한 경우 db에 인코딩돼있는정보롤 decoding해 필요한 정보를 얻어온다.

 

 

데이터베이스 공유 & 외부 데이터베이스 접근하기

 

1. 로컬이 아닌 외부 접근가능 새계정 생성
2. 새계정에게 root 접속 권한 허용
3. 타 PC에서 ip연결을 통해 새계정 접속
4. 연결

 

Administration 탭 > Users and Privileges > Login Name : user1 > Add Account > Schema Privileges 탭 > 권한 체크 후 Apply

 

+) IP 주소 확인

명령 프롬포트(cmd)에서 ipconfig 입력 > IPv4 주소 확인