โ๏ธ ์ฃผ๊ฐ ๊ณต๋ถ ๋ด์ฉ ์์ฝ
์๋ฐ์ ๋ํ ํ์ต์ ์ด๋์ ๋ ๋ง๋ฌด๋ฆฌ์ง๊ณ , SQL ๊ณต๋ถ ์์ํ ์ฃผ๊ฐ. ์ฝ์์ฑ ๋ง๋ค์ด๋ณด๋ฉด์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ฝ๋์ง๋ ๋ฐฉ๋ฒ๊ณผ ํ๋ก์ ํธ์ ๋ก๊ฑฐ API๋ฅผ ์ฌ์ฉํ๋๋ฒ์ ๋ฐฐ์ ๋ค. ์ดํด๋ฆฝ์ค์ ๋ชจ๋ ์ถ๊ฐํ๋ ๋ฒ, ์ฝ๋ ์์ฑํ ๋ ๋์์ธ ํจํด์ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง ๋ฐฐ์ ๋ค. ๋ด๊ฐ ์ํ๋ ๋ชปํ๋๋ผ๋ ์ ์๋๊ป์ ํค์๋๋ ๋ค ์ง์ด์ฃผ์๊ธฐ ๋๋ฌธ์, ํด๋น ํค์๋ ๊ฐ์ง๊ณ ๋ถ์กฑํ๊ฑฐ๋ ๊ถ๊ธํ ๋ถ๋ถ์ ๊น์ ํ์ต์ด ํ์ํ๋ค. ํ๋ก ํธ์๋ ๊ณผ์ ์์๋ ์๋ ๋ถ๋ถ์ด์์ด์ ๊ด์ฐฎ์๋๋ฐ, ๋น ๋ฅด๊ฒ ์ง๋๊ฐ๋ค๋๊ฒ ๋ฌด์จ ๋ง์ธ์ง ์ด์ ์ผ ์ดํดํ๋ค. ๊น์ด์๋ ๊ณต๋ถ๋ ๋ด๊ฐ ๋ค๋ค๋ณด๋ฉฐ ์ดํดํด์ผํ ๊ฒ ๊ฐ๋ค.
[1.9.์์์ผ] - ์ ๋ฒ์ฃผ์ฐจ ์ฝ์ ์ฑ ๊ตฌํ ํ๋ก์ ํธ ๋ฆฌํฉํ ๋งํ๊ณ ์ด์๋จ๊ธฐ๊ธฐ - ์๋ฐ ๋๋ค์, ํจ์ํ ์ธํฐํ์ด์ค, ์ ๋๋ฆญ, ์ปฌ๋ ์
, JUnit [1.10.ํ์์ผ] - java logger api ์ฌ์ฉ ์ค์ต - ๋์์ธ ํจํด(Facade) - ์ดํด๋ฆฝ์ค build path classpath๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ [1.10.์์์ผ] - logger ํ๋ ์ ์ํฌ SLF4J ์ค์ต - ๋์์ธ ํจํด(Builder) - ์ง์ builder ํจํด์ผ๋ก ๊ตฌํ [1.11.๋ชฉ์์ผ] - SQL ์์ - MYSQL ์ค์น ๋ฐ ์ค์ต ์์ - ์์
์ ์ฌ์ฉํ๋ ์ฑ
<๋ฌ๋SQL> [1.12.๊ธ์์ผ] - SQL๋ฌธ ์์ฑ - DML SELECT๋ฌธ WHERE์ , ์๋ธ์ฟผ๋ฆฌ ํ์ฉ - DDL ์์ฑ
๐ง Logging
๋น ๋ฅธ ์ปค๋ฆฌํ๋ผ์ ํ ๊ฐ์ง ์ฃผ์ ๋ก ํ๋ฃจ ์ด์์ ๋๊ธฐ๋ ์ผ์ด ์ ์๋๋ฐ ๋ก๊ฑฐ ํ๋๋ก 3์ผ ๋์ ์์
์ด ์งํ๋์๋ค. ์๋ฐ์ ๋ด์ฅ api ๋ชจ๋์ธ logger๋ถํฐ ์ฌ์ฉํด๋ณด๊ณ , ํ์ฌ๋ ๋ณด์ ์ด์๋ก ์ฌ์ฉ๋์ง ์๋๋ค๋ Log4j๋ถํฐ SLF4J๊น์ง ์์ฐจ์ ์ผ๋ก ์ฌ์ฉํด๋ณด์๋ค. ์ค์ํ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ์์ ๋ ์ฐพ์๋ณด์๋ค. ์คํ๋ง ๋ถํธ์ ๊ณตํต ๋ก๊ทธ ๋ชจ๋๋ก SLF4J๊ฐ ์ฌ์ฉ๋๊ณ ์๊ณ , ์คํ๋ง์ ๊ณต๋ถํ ๋ ๋ ๊น์ด์๊ฒ ํ์ตํด๋ด์ผ๊ฒ ๋ค. ๊ฐ๋
์ ์๋ ํฌ์คํ
์ผ๋ก ๋ค์ ์ ๋ฆฌํ๋ค.
Logging | SLF4J
Logging ๋ก๊น
์ด๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ํ๋ ์ค๋ฅ์ ๋ํด ๋๋ฒ๊น
ํ๊ฑฐ๋ ์ด์ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ํฐ๋ง ํ๊ธฐ ์ํด ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ ๊ฒ. ์ฝ์์ ์ถ๋ ฅํ๊ฑฐ๋ ํ์ผ ๋ฑ์ ์ ๋ฌํ์ฌ ์ ์ฅํ๋ ํ์ S
jieum.tistory.com
๐ง ๋์์ธํจํด
๋์์ธ ํจํด์ด ์ํคํ
์ฒ ๊ฐ์ ์๋น์ค๋ฅผ ๊ดํตํ๋ ํ๋์ ํจํด์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ฝ๋ ์ง๋ ๋ฐฉ๋ฒ์ ๋ํ ๋์์ธ ํจํด์ด์๋ค. ์ ์ฒ๊ธฐ ๊ณต๋ถํ๋ฉด์ ์๊ตฌํ ์ค์ผ๊ฑฐ๋ฆฌ๋ฉฐ ๋ฌ๋ฌ ์ธ์ ๋ ๊ธฐ์ต์ด ๋๋ค. ๋์์ธ ํจํด์ ์์ฑ ํจํด ์ค ํ๋์๋ Builder ํจํด์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ฉด์ ์ ์์ฑ ํจํด์ธ์ง ์ดํดํ ์ ์์๋ค. ํ๋์ ๋์์ธ ํจํด์ ๊ณต๋ถํ ๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ๋์ง ์์์ผ ๋์์ธ ํจํด์ ์ ์ธ ์ ์๋ค๊ณ ํ๋ค. ์ง์ ์ฌ์ฉํด๋ณด๋ ๋ ์ดํด๋๊ฐ ์ฌ๋ผ๊ฐ์ ๋๊ผ๋ค.
๐ง Facade ํจํด
SLF4J์ ๋ํด ๊ณต๋ถํ๋ฉด์ ํ์ฌ๋ ๋์์ธ ํจํด์ ๋ํ ๋ด์ฉ๋ ๊ฐ์ด ํ์ตํ๊ฒ ๋์๋ค. ์ ํ์ฌ๋ ํจํด์ธ์ง ์ ์ ์์๋ค. ํ๋ก๊ทธ๋จ ์์ํ ๋ ์ฝ๋๋ฅผ ์ธ๋ถ์์ ์ถ์ํ์์ผ์ค๋ค. ๋์์ธ ํจํด ์ค์์ '๊ตฌ์กฐ'์ ํด๋นํ๋ ์ด์ ์ด๋ค.
Java logging facades and bridges
Making sense of seemingly complicated java logging dependencies
deepakvadgama.com
๐ง Builer ํจํด
- ๊ฐ์ฒด์ ์์ฑ์ ๋ํ ํจํด - ์์ฑ์ ์ง์ ํด์ผํ ์ธ์๊ฐ ๋ง์ ๋ ์ฌ์ฉ(๋ณต์กํ ๊ตฌ์ฑ์ ๊ฐ์ฒด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ๋ ํจํด) - ๊ฐ์ฒด ์์ฑ ์ ์ฌ๋ฌ ๋จ๊ฒ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฑฐ์น ๋, ์ด ๋จ๊ณ์ ์์๋ฅผ ๊ฒฐ์ ํด๋๊ณ ๊ฐ ๋จ๊ณ๋ฅผ ๋ค์ํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํ๋ค.
public class Person {
new Person() // ๊ธฐ๋ณธ ์์ฑ์
new Person(6, "yoo") // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
new Person(6, "yoo", "010-1234-1234")
...
}
// ์ ์ธต์ ์์ฑ์ ํจํด
(์ ) ์ด๋ค ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ธฐ๋์ง ์๊ธฐ ์ด๋ ต๊ณ , ๋ณต์กํด๋ณด์ธ๋ค.
public class Person {
Person person = new PersonBuiler.name('Yoo')
.age(20)
.number('010-1234-5678')
.build()
...
}
(ํ) ๋ช
์์ ์ผ๋ก ์์ฑํด์ ๊ฐ๋
์ฑ์ด ์ข์์ก๋ค.
๐ง java ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
์ดํด๋ฆฝ์ค์์ ๋ ํฌ์งํ ๋ฆฌ ๋ด์ฉ์ ํ ๋ฐ์ผ๋ฉด ์๋ฐ ํ์ผ์ด ๊ณ์ ์คํ ๋์ง์๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์ด๋ ์ ๋๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ์ฝ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์๋๋ฐ Java Build Path๋ฅผ ๊ณ์ ๋ค์ด๊ฐ์ Add Library์์ ๊ณ์ ๋ฒ์ ์ด ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผํ๋ค. ์ข ๋ ์ดํด๊ฐ ํ์ํ ๋ถ๋ถ์ด๋ค.
Java๊ฐ ํ์ผ์ ์ฝ๋๋ก ํ๋ ๋ฒ
Maven Repository์์ ํ์ํ ๋ชจ๋์ ๊ฐ์ ธ์์ ์จ์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒผ๋ค. ์๋ฐ์์๋ ํ๋ก์ ํธ์ ์ด๋ป๊ฒ ๋ฃ์ด์ค์ผํ ๊น Build Path ์๋ฐ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋๋ฐ ํ์ํ ๋ชจ๋ ๋ฆฌ์์ค ํ์ผ๋ค์ด ๋ชจ์ฌ์๋
jieum.tistory.com
๐ง SQL ์ค์ต
ํ๋ก๊ทธ๋๋จธ์ค์์ SQL ํ๋๋ง๋ค ์ํ๋ ๋๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ธํด ๋ณผ ์ ์์ด์ ๊ต์ฅํ ๋ต๋ตํ๋๋ฐ ์ด์ ๋ ๋ฐฐ์ ์ผ๋๊น ๋ด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑํด์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ ๋ฃ๊ณ ๋นผ๊ณ ํ๋ฉด์ ์ค์ตํด ๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค. ํ๋ ์์ํฌ ์ฐ๋ฉด์ ๋นจ๋ฆฌ DB์ฐ๊ฒฐํ๊ณ ์ถ๋ค. ๋ค์์ฃผ SQL ๊ณผ์ ์ด ๋๋๋ฉด ์คํ๋ง์์ ์ฐ๋ํ๋ ๊ฒ๋ ๋ฐฐ์ฐ๊ฒ ๋ ํ
๋ฐ ์ผํ๋ฉด์ ๋ง์ฐ์ค๋ก๋ง ๋ธ๊ฐ๊ฑฐ๋ ธ๋ ์์
์ ์ง์ ๊ตฌํํด๋ณด๋ฉด ์ผ๋ง๋ ์ฌ๋ฐ์๊น ๊ธฐ๋์ค์ด๋ค. ํฐ๋ฏธ๋์์๋ ์ง์ ํ ์ ์๊ณ , MYSQL ์ํฌ๋ฒค์น๋ฅผ ์ด์ฉํ ์๋ ์๋ค.
mysql -uroot -p
show DATABASES;
CREATE DATABASE testDB;
use testDB;
CREATE TABLE person(
id INT,
nicname VARCHAR(20)
);
INSERT INTO person (id, nicname) VALUES (1, "Jone");
๐ฝ๏ธ ์ฃผ๊ฐ์์ฌ
๋ญ ๋จน์ด๋ ์ ๋จน์ง๋ง, ์น๊ตฌ๋ค ๋ฐ๋ผ๋ค๋๋ฉด์ ๋ ๋ง์๋ ์ ์ฌ์ ๋จน๊ณ ์๋ค. ์ด๋ฒ์ฃผ ์์์์ ๋ง์๊ฒ ๋จน์๋ ์์ฌ ๊ธฐ๋ก
์จ๋๋ถ๋ฆฌ ๋ถํ๋. ์์ ํธ๋ฅด์ง์ค์ํฐ 2์ธต ์๊ณ ๊ฐ๊ฒฉ์ 11000์ ์ฌ์ผ๋์ง์ด๋ผ๊ณ ํด์ ๊ฐ๋๋ฐ ๋ค๋ฅธ ๋ฉ๋ด๋ฅผ ์์ผ๋ณด์๋ค. ์ผ๋ฐ์ ์ธ ๋ถํ๋์ด๋ ๊ณ ๊ธฐ ๋ชจ์์ด ๋ค๋ฅด๊ธธ๋ ๊ถ๊ธํ๋ค. ๋จน์ด๋ณด๋ ์ฝ๊ฐ ๋งค์ฝคํด์ ๋ ๋ง์์๋ค.
์ ํฅ์ 1์ธ ์ค๋ธ์ค๋ธ ๋ง์ํ. ๋๋ฆฌ๊ฟ์คํ์ด ์งํ1์ธต์ ์๋ 1์ธ ์ค๋ธ์ค๋ธ์ง ์ธ๋น 12000์์ ์นผ๊ตญ์ ๋ณถ์๋ฐฅ๊น์ง ๋จน์ ์ ์๋ค. ๋ค๋ค ๋ง์กฑํ๋ ๊ณณ.
๐์ด๋ฒ์ฃผ ํ๊ณ ์ ๋ค์์ฃผ ๊ณํ
์ด๋ฒ์ฃผ ๊ฐ๊ธฐ๋ชธ์ด ์ด์๋ก ์ ์ ๋ง์ด ์๊ณ ํด์๊ธฐ๋ฅผ ๊ฐ์ก๋ค. ๋นํ๋ฏผ์ ์ข
๋ฅ๋ณ๋ก ๋ฐ๋ก ๋จน๋๊ฒ ๋ฌธ์ ๊ฐ์์ ๋ณด์ํ๊ณ ์ ์ข
ํฉ ๋นํ๋ฏผ์ผ๋ก ๋ฐ๊ฟจ๋ค. ๊ทธ๋์ ๊ณต๋ถ๋ฅผ ๋ง์ด ํ์ง๋ ๋ชปํ๋ค. ๋ค์์ฃผ ๋ชฉํ๋ ์์
์ ๋ฐ๋ผ๊ฐ๋ฉด์ ์ถ๊ฐ ํ์ต ์ํ๊ณ , ์ฝํ
1์ผ1์๋ ์ค์ฒํ๊ธฐ. ๊ฒฝํ์ ๋ฆฌ ๋๋ด๊ธฐ)