0. ์์๋ณผ ๋ด์ฉ
Java์ ๊ฐ์ฒด ์ง๋ ฌํ์๋ ๋ ๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋ค.
์ฒซ ๋ฒ์งธ๋ก, Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ Byte Stream ์ง๋ ฌํ
ํ๋ ๊ฒ ์ด๋ค.
๋ ๋ฒ์งธ๋ก, RESTful API Sever๋ฅผ ๊ตฌํํ ๋, ๋ฐ์ดํฐ ๊ตํ์ ์ํด ๊ฐ์ฒด๋ฅผ JSON ์ง๋ ฌํ
ํ๋ ๊ฒ ์ด๋ค.
๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ ์ด๋ ดํ์ด ์์ง๋ง, ์ ๋๋ก ๊ตฌ๋ถํ์ฌ ๊ธฐ์ตํ์ง ์์๋๋, ๋ ๋ฐฉ๋ฒ์ ๊ตฌํ ๋ฐฉ์๊ณผ ํ์ฉ๋ฒ์ด ์๋ก ๋ค์ฃฝ๋ฐ์ฃฝ ์์ฌ ์์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ๊ฐ์ง ํํ์ ์ง๋ ฌํ์ ๋ํด ์ ํํ ์์๋ณด๊ณ , ๊ทธ ์ฐจ์ด์ ์ ๊ตฌ๋ถํ๋ ค ํ๋ค.
์ฌ๊ธฐ์๋ ๋จผ์ ๋ ์ง๋ ฌํ์ ์๋ฏธ๋ง ๊ฐ๋ตํ ์์๋ณด๊ณ ์ฐจ์ด์ ์ค๋ช
์ ๋ ์ง์คํ๊ฒ ๋ค.
๋ง์ฝ ๋ ์์ธํ
์๊ณ ์ถ์ ๋ถ์ ๊ฐ ํญ๋ชฉ ๋ณ ๋ ์์๋ณด๊ธฐ
๋งํฌ๋ฅผ ํตํด ํ์ธํ๊ธฐ ๋ฐ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ ๊ฐ์ง ํํ๋ก ์ง๋ ฌํ ํ๋ค๊ณ ํด๋ณด์.
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
1. Byte Stream ์ง๋ ฌํ
Java์ ํน์ ๊ฐ์ฒด๋ฅผ Byte Stream ์ง๋ ฌํ ํ๋ค.
์ ์๋ฏธ๋ ๊ฐ์ฒด์ ์ํ
๋ฅผ ์ด์ง ๋ฐ์ดํฐ ํ์์ธ Byte Stream ํํ๋ก ๋ณํ
ํ๋ค๋ ์๋ฏธ์ด๋ค. ๋ง์ฝ ์์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ Byte Stream์ผ๋ก ์ง๋ ฌํํ ๋ค, ํด๋น ํ์ผ์ ์ด์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ๋ณด์ผ ๊ฒ์ด๋ค.
aced 0005 7372 0011 5365 7269 616c 697a 6554 6573 7400 0124...
์ด๋ ๊ฒ ๋ณํ๋ ๊ฐ์ฒด๋ ํ์ผ ํํ๋ก ์ ์ฅ๋๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๊ธฐ๋ ํ๋ค.
์ฌ๊ธฐ์ ์ ์ํด์ผํ ๋ถ๋ถ์ด ์๋ค.
- Byte Stream ํํ๋ก ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ๊ณ ์ถ๋ค๋ฉด ํด๋น ๊ฐ์ฒด์ ํด๋์ค๊ฐ Serializable์ด๋ ๋ง์ปค ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
- ๊ฐ๋ ์ค๋ช ์์ ๋งํ๋ฏ์ด ๊ฐ์ฒด์ ์ํ๋ง ๋ณํํ๋ค. ์ฆ ๋ฉค๋ฒ ๋ณ์์ ๊ทธ ๊ฐ๋ง ์ ์ฅํ๊ณ , ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋งค์๋๋, ํด๋์ค์ ์ํ๋ฅผ ์ค๋ช ํ๋ ์ ์ ํ๋๋ ๋ณํ๋์ง ์๋๋ค.
๋ ์์ธํ ์ฌํญ์ ๋ ์์๋ณด๊ธฐ์ ๋ ์์ธํ ์ ์ด๋๋๋ก ํ๊ฒ ๋ค.
2. JSON ์ง๋ ฌํ
Java์ ํน์ ๊ฐ์ฒด๋ฅผ JSON ์ง๋ ฌํ ํ๋ค.
์ ์๋ฏธ๋ ๊ฐ์ฒด๋ฅผ ํ
์คํธ ๊ธฐ๋ฐ <key,value> ํํ
๋ก ๋ณํํ๋ค๋ ๊ฒ์ด๋ค.
JSON ์ด๋ Javascript object notation์ ์ฝ์๋ก java script ๊ฐ์ฒด ๋ฌธ๋ฒ ํํ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๊ตํ์ ํ ์์์ด๋ค. ์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ JSON ์ง๋ ฌํํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ์ผ ๊ฒ์ด๋ค.
{
"name" : "์ ์๋ฏผ",
"age" : 30
}
์ด๋ฐ ์ ํ์ ๋ฐ์ดํฐ ์์์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ ํ๋ฉด์ ๋ง์ด ๋ง์ฃผ์ณ์๋ค. ํด๋น ํฌ๋ฉง์ ์ธ์ด๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ์์์ผ๋ก, ์ด๋ค ์ธ์ด ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ์์๋ ํธํ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์ ์์ฃผ ์ฌ์ฉํ๋ค.
๋ ์์ธํ ์ฌํญ์ ๋ ์์๋ณด๊ธฐ์์ ๋ ์์ธํ ์ ์ด๋์๋ค.
3. ๋์ ์ฐจ์ด์
๊ตฌ๋ถ | Byte Stream ์ง๋ ฌํ | JSON ์ง๋ ฌํ |
---|---|---|
๊ฐ๋ | Java ๊ฐ์ฒด์ ์ํ๋ฅผ ์ด์ง ๋ฐ์ดํฐ๋ก ๋ณํ | Java ๊ฐ์ฒด์ ์ํ๋ฅผ JSON ํ์(key-value)์ผ๋ก ๋ณํ |
๋ชฉ์ | ๊ฐ์ฒด์ ์ ๋ณด ๋ณด์กด ๊ฒ์ ๋ฐ์ดํฐ ์ธ์ด๋ธ, ๋ณต์์ ์ํ ์บ์ฑ์ ์ฌ์ฉ |
๋ฐ์ดํฐ ๊ตํ ๋ค๋ฅธ ์ธ์ด ๊ธฐ๋ฐ์ ์๋ฒ, ํด๋ผ์ด์ธํธ์๋ ์ํตํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉ |
๊ฐ๋ ์ฑ | ์ด์ง ๋ฐ์ดํฐ ํํ๋ผ ๋ด์ฉ ํ์ ์ด ์๋จ | ํ ์คํธ ๊ธฐ๋ฐ์ <key, value>ํํ๋ผ ๋ด์ฉ ํ์ ๊ฐ๋ฅ |
์ธ์ด ์ข ์์ฑ | ์ข
์์ Java ๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ์ง๋ ฌํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ์ฌ ์ฌ์ฉํ ์ ์์. |
๋
๋ฆฝ์ ๋ฒ ์ธ์ด์ ์ผ๋ก ์ฝ์๋ ์์์ด๋ผ ๋๋ค์์ ํ๋ ์์ํฌ์์ ํ์ฑํ์ฌ ํ์ฉํ ์ ์์. |
์ฑ๋ฅ | ์ด์ง ํฌ๋ฉง์ด๋ผ JSON ๋ณด๋ค ์ง๋ ฌํ ์์ ์ด ๋น ๋ฅด๊ณ , ๋ฐ์ดํฐ ์ฉ๋์ด ์์ | ํ ์คํธ ๊ธฐ๋ฐ์ ํฌ๋ฉง์ด๋ผ ByteStream์ ๋นํด ์ง๋ ฌํ ์์ ์ด ๋๋ฆฌ๊ณ ๋ฐ์ดํฐ ์ฉ๋์ด ํผ |