์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ๋ ์ด๋ฏธ ์ค๋ ์ ์ ๊ฒ์ ์์ฑ์ ๋ง์ณค์ผ๋ ์์ง ๊ธ์ ์์ฑํ์ง ๋ชปํ์ต๋๋ค. ์ด๋ ์ด ๊ธ์ ๋
ผ๋ฆฌ์ ์ฐ์์
๋๋ค . ์์ง ๋ค๋ฅธ ์๋๋ฅผ ํ์ง ์์ผ์
จ๋ค๋ฉด JavaRush ์์
๋ณด๋ค ๊ฒ์์ ์ต์ํด์ง๋ ๊ฒ์ด ์ ํํ ์์ํ๊ณ ์ถ์ ๊ณณ์ด ๋ ๊ฒ์
๋๋ค. ์ค์ ํ๋ก์ ํธ์ ํ
์คํธ ์์
์ค๋น๋ฅผ ์์ํด์ผ ํ๋ฉฐ, ๋ชจ๋ ์ฌ๋์ด ์ฐธ์ฌํ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ๋ ์ง๊ณต ์ํ์ ๊ตฌํ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๋ ๊ฒ์ ๊ทธ๋ง๋๊ณ Java ์ฝ์ด ์ธ๋ถ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์์ํ ๋์
๋๋ค. ๋จ์ํ ๊ฒ์์ ๋ณด๋ ค๋ฉด MySQL์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. ์์ง ์ฌ์ฉํ์ง ์์๋ค๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ์ค์นํ์ญ์์ค. ์ด๊ฒ์ ์
๋ฌด ๋ฐ ๊ฐ์ธ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋์
๋๋ค! ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น ๋ฐ ์์
์ ๋ํ ์ค๋ช
์ ์ ๊ณตํ์ง ์๊ฒ ์ต๋๋ค. ์ธํฐ๋ท์๋ ์๋ง์ ํํ ๋ฆฌ์ผ๊ณผ ๋น๋์ค๊ฐ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ์ค์ค๋ก ์์๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ ๋ํ ํ๋ก๊ทธ๋๋จธ์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ์ ์ค ํ๋์
๋๋ค. ์ค์ค๋ก ๊บผ๋ด์ธ์ :) ์ธ์์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก SQL์์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ JDBC, ์ต๋ ์ ์ ๋ชจ๋ , ์คํ๋ง, ์คํ๋ง ๋ฐ์ดํฐ๋ฅผ ํตํด ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ ๋ฅ๋ ฅ์ด ํ์ํฉ๋๋ค. ์๋ง๋ ๋ชฉ๋ก์ด ๊ณ์๋ ์ ์์ง๋ง ๋ด ์ง์์ ๊ฑฐ๊ธฐ์ ๋๋ฉ๋๋ค. ์ด์ ์ด ๊ธฐ์ฌ๋ฅผ ์ฝ์ง ๋ง๊ณ MySQL์ ์์๋ณด์ธ์. ์ค์ ๋ก๋ ์ ํ ์ด๋ ต์ง ์์ต๋๋ค. ์๋ฒ ์์ฒด๋ฅผ ์ค์นํด์ผ ํ๋ฉฐ ์ ์ผํ ์ค์ ์ ๋ก๊ทธ์ธ๊ณผ ๋น๋ฐ๋ฒํธ๋ฟ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์
ํ ๋ ์ด๋ค ๋ช
๋ น์ด ์ฌ์ฉ๋๋์ง ์ฝ์ด๋ณด์ธ์. ์๋ฒ ์์
์ ์ํ ๋ช
๋ น: ํญ๋ฌธ์ ๋ง์ ๊ณ ํต์ด ์๊ธฐ๊ณ DAO ํด๋์ค( ์ํค๋ ๊ฐ๋ฅ ) ์์ฑ์ด ์ฝ๊ฐ ๋ณต์กํด์ง๋ฉฐ ์ต๋ ์ ์ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฉ์ด ์ฝ๊ฐ ๊ฐ์ ๋๊ณ ๋ฐ๋ณต์ฑ์ด ํจ์ฌ ์ค์ด๋ญ๋๋ค(ํ
ํ๋ฆฟ ) ์ฝ๋. ์ต๋ ์ ์ ๋ชจ๋๊ฐ ์๋ํ๋ ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์ด ์์
์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ํ๋ฉ๋๋ค. Ctrl+Alt+Shift+S(ํ์ผ-ํ๋ก์ ํธ ๊ตฌ์กฐ), ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํญ์ผ๋ก ์ด๋ํ์ฌ "+"๋ฅผ ํด๋ฆญํ๊ณ ์ฌ์ ๋ค์ด๋ก๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ( ์ฌ๊ธฐ์์ ์ต์
์ผ๋ก ). ํด๋์ค๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ฃผ์์ ์ฌ์ฉํด์ผ
create
, show
, use
๋ฐ ๊ธฐํ ๋ช
๋ น help
- ์ ์ฒด ๋ช
๋ น ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค. ํน์ ํ
์ด๋ธ ์์
์ ์ํ ์ฟผ๋ฆฌ: select
, insert
๋ฐ delete
๊ธฐํ. ๋๋ฌด ๊น์ด ๋ค์ด๊ฐ์ง ๋ง์ญ์์ค. ๋จ์ํ ๋ช
๋ น์ ์ฝ๋ ๊ฒ๋ง์ผ๋ก๋ ์์ฃผ ์์ ๋ถ๋ถ๋ง ๊ธฐ์ตํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋น์ ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ชจ๋ ๊ฒ์ ๋ฐฐ์ธ ๊ฒ์
๋๋ค. MySQL ํฐ๋ฏธ๋์์ ํ๋ ์ดํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ณ , ํ
์ด๋ธ์ ์์ฑํ๊ณ , ์ฑ์ฐ๊ณ , ๋ฐ์ดํฐ ํ์๋ฅผ ์์ฒญํ๊ณ , ์ฟผ๋ฆฌ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ 2~3์๊ฐ์ด ์ฑ ๊ฑธ๋ฆฌ์ง ์์ ๊ฒ์
๋๋ค. ์๊ฐ์ด ๋ ๊ธธ๋๋ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์. ๊ฒฝํ์ ์์ผ๋ฉด ์๋ก์ด ์๋ฃ๋ฅผ ๋ ๋นจ๋ฆฌ ์ตํ ์ ์์ต๋๋ค. ๋ฒ ์ด์ค์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์ ๊ฐ ์ด๋ฏธ tic-tac-toe ์ ๋ํด ์์ฑํ ๊ฒ์์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ ๊ฐ๋ฐ์ ์์ํ ์ ์์ต๋๋ค.. ์ค๋ซ๋์ ๋ฉํฐํ๋ ์ด์ด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐ์ฑ
์ ์ฐพ์์ต๋๋ค. ๊ฒ์ ํ๋ก์ธ์ค์์๋ ํ๋ ์ด์ด๊ฐ ์ฐจ๋ก๋๋ก ์งํํ๋ฉฐ ๊ฒ์์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ก๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฏธ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ๋ฆฌ๋ ํ๋ ์ด์ด๊ฐ ์๊ณ ํ๋ ์ด์ด์ ๋ํ ๋งํฌ๊ฐ ํฌํจ๋ ๊ฒฝ๊ธฐ์ฅ์ด ์๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ํ ํ๋ ์ด์ด๊ฐ ๋ ๋ฒ์งธ ํ๋ ์ด์ด๊ฐ ์์ง์ผ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋
ผ๋ฆฌ๊ฐ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ๊ณณ์ ๊ฒฝ๊ธฐ์ฅ์ ์์ต๋๋ค. ๊ทธ ํ ์ญํ ์ด ๋ฐ๋๊ณ ์ฒซ ๋ฒ์งธ ํ๋ ์ด์ด๊ฐ ์์ง์ด๊ณ ๋ ๋ฒ์งธ ํ๋ ์ด์ด๊ฐ ๊ธฐ๋ค๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์ ๋์ด์ผ ํ๋ฏ๋ก ์ด๋ํ ๋๋ง๋ค ํ๋๋ฅผ ์ ์ฅํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ ์ด ํ๋๊ฐ ์์ด์ผ ํ๋ฉฐ ๋ฉํฐํ๋ ์ด์ด์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฏ๋ก ๊ฑฐ๊ธฐ์ ํ๋ ์ด์ด๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ์ฒซ ๋ฒ์งธ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. MySQL์์ ํ
์ด๋ธ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๋ mysql ํฐ๋ฏธ๋ ์ฐฝ์ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ํํ์ต๋๋ค. ๊ฒฝ๊ธฐ์ฅ์๋ ํ๋ ์ด์ด์ ๋ํ ๋งํฌ๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ๋จผ์ ํ๋ ์ด์ด์ ํจ๊ป ํ
์ด๋ธ์ ๋ง๋๋ ๊ฒ์ด ๋
ผ๋ฆฌ์ ์
๋๋ค. ์ฐ๋ฆฌ ํ๋ ์ด์ด๋ค์:
id
โ ์ํ์ค ๋ฒํธ, ์ด๋ฅผ ๊ธฐ๋ณธ ํค๋ก ๋ง๋ญ๋๋ค.name
โ ์ผ๋ฐ ์ด๋ฆ, ๋ฌธ์์ด;wins
โ ์น๋ฆฌ ํ์loses
โ ๋ณ๋ณ์ ์;games
โ ํ๋ ์ดํ ์ด ๊ฒ์ ์.
id
โ ์ํ์ค ๋ฒํธ, ์ด๋ฅผ ๊ธฐ๋ณธ ํค๋ก ๋ง๋ญ๋๋ค.x
โ ํ๋ ์ดํ๋ ํ๋ ์ด์ด์ IDั
โ ๋ณด์กฐ ํค;o
โ ํ๋ ์ดํ๋ ํ๋ ์ด์ด์ IDo
โ ๋ณด์กฐ ํค;field
โ ํ๋ ์์ฒด, ํด๋น ํ์์ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.status
โ ์ด๋ ๋ฉํฐํ๋ ์ด์ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ๋ฐ ํ์ํ๋ฉฐ ์ํ๋ ๊ฒ์ ์ํ(
์์ฑ, ํ๋ ์ด ์ค, ๊ฒ์ ์ข ๋ฃ)๋ฅผ ๋ํ๋ ๋๋ค.current
โ ๋ฉํฐํ๋ ์ด์ด์ ๊ฒฝ์ฐ์๋, ํนํ ๊ฒ์ ์ค์ ์ด ํ๋๋ ํ์ฌ ์ฐจ๋ก๊ฐ ๋๊ตฌ์ธ์ง ์ ์ดํ๊ณ ,
์ข ๋ฃ ํ์๋ ์น์ ๋๋ ๋ฌด์น๋ถ๋ฅผ ์ ์ธํฉ๋๋ค.
Game
๋ฐ ์ ์ฌ์ฉํ์ฌ Java ํด๋์ค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค User
.
public class Game {
private Integer id;
private Integer x;
private Integer y;
private Integer field;
private String status;
private String current;
}
public class User {
private Integer id;
private String name;
private Integer wins;
private Integer loses;
private Integer games;
private Boolean busy;
}
๋งค๊ฐ ๋ณ์ ์์ด ๋น ์์ฑ์๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ํ ์์ฑ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ๋ ๋ค๋ฅธ ์์ฑ์๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ชจ๋ ํ๋์ ๋ํด setter์ getter๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ ์ต๋ ์ ์ ๋ชจ๋๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค :) ์๊ฐ์ด ์ง๋ ์๋ก ๋ ์ฌ์์ง์ง ์์ต๋๋ค. MySQL๋ณด๋ค ์กฐ๊ธ ๋ ๋ณต์กํ๋ฏ๋ก ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์ ๋งํ์ง๋ง, ๋ชจ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ๋ณต์กํ์ง๋ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ฌํญ์ ํํ ๋ฆฌ์ผ์ ํตํด ๋ช ์๊ฐ ์์ ๋ฐฐ์ธ ์ ์์ผ๋ฉฐ, ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋์ ๊น์ด ๊ณต๋ถํ๋ ๊ฒ์ด ์ข์ต๋๋ค. JAVA์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์๋ JDBC ์ฌ์ฉ์ด ํฌํจ๋ฉ๋๋ค. ์ด์ ๋ํ ๋ด์ฉ์ wiki ์์ ์ฝ์ด๋ณด์ธ์ . ๊ทธ๋ฌ๋ ์ฝ๋ ์์ฑ์ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด User
ํฉ๋๋ค Game
. ์ฃผ์์ ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ์ฝ๊ณ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@Entity
@Table(name="games")
public class Game {
private Integer id;
private Integer x;
@Id
@GeneratedValue
@Column(name = "id")
public Integer getId() {
return id;
}
@Column(name = "x")
public Integer getX() {
return x;
}
}
์ฌ๊ธฐ๋ ๊ฐ๋จํด์
@Entity
โ ํด๋์ค๋ ๊ฐ๋จํ ๋งํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์ฐ๊ฒฐ๋์ด ์๋ "์ํฐํฐ"๋ผ๊ณ ๋งํฉ๋๋ค.@Table(name="games")
โ ์ด๋ค ํ ์ด๋ธ์ธ์ง ์๋ ค์ค๋๋ค.games
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋๋ค.@Id
,@GeneratedValue
,@Column(name = "id")
โ ์ด ์ธ ๊ฐ์ง ์ฃผ์์ ์ฌ์ฉํ๋ฉด ์ด ํ๋๊ฐ ์๋ณ ํ๋์ด๊ณ ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด์ด id๋ผ๋ ๊ฒ์ ๋ํ๋ ๋๋ค.@Column(name = "x")
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ์ด์ ์ด๋ฆ์ ๋๋ค.
public class UserDAO {
public void addUser(User user) throws SQLException {
Session session = null;
try{
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
} catch (Exception e){
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ ์์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ํฐํฐ ํด๋์ค์ ๊ฐ์ฒด๋ง ๋ฉ์๋์ ์ ๋ฌ๋๋ฏ๋ก ์ฌ๊ธฐ์๋ ์ถ๊ฐ ์ ๋ณด๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ HibernateUtil ํด๋์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ํต์ ์ธ์
์ ์์ ํ๋ค๋ ์ฌ์ค์ ์ํด ๋ณด์ฅ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๊ณ ๋ คํด ๋ด
์๋ค.
public class HibernateUtil {
private static SessionFactory sessionFactory = null;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
๋ณด์๋ค์ํผ ์ฌ๊ธฐ์ ์๋ ๋ชจ๋ ๊ฒ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค SessionFactory
. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ ์ต๋ ์ ์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธํฐํ์ด์ค์
๋๋ค. ์ฌ๋ฐ๋ฅธ ์๋์ ์ํด ๋จ์ ๊ฒ์ hibernate.cfg.xml ๊ตฌ์ฑ ํ์ผ์ ์์ฑํ๋ ๊ฒ๋ฟ์
๋๋ค.
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/tictactoe</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.pool_size">100</property>
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="show_sql">false</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.enable_lazy_load_no_trans">true</property>
<mapping class="entity.User" />
<mapping class="entity.Game" />
</session-factory>
</hibernate-configuration>
ํ๊ทธ๋ฅผ ๋ณด๋ฉด ์ฌ๊ธฐ์ ๋ฌด์์ ์ด๋ป๊ฒ ์ค์ ํ๊ณ ์๋์ง ๋ช
ํํด์ง๋๋ค. ์ต๋ ์ ์ ๋ชจ๋์ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ MySQL์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ property name="connection.driver_class"
DAO ๋ ์ด์ด๊ฐ ์ค๋น๋ ํ๊ทธ ๋ด๋ถ์ ๋๋ผ์ด๋ฒ๋ง ๋ณ๊ฒฝํ๋ฉด ์๋น์ค ๋ ์ด์ด๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์๋น์ค ๊ณ์ธต์์ DAO ๊ฐ์ฒด ์์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํฉํ ๋ฆฌ ํจํด์ ์ฌ์ฉํฉ๋๋ค.
public class Factory {
private static UserDAO userDAO = null;
private static Factory instance = null;
private Factory() {
}
public static synchronized Factory getInstance() {
if (instance == null) {
instance = new Factory();
}
return instance;
}
public UserDAO getUserDAO() {
if (userDAO == null) {
userDAO = new UserDAO();
}
return userDAO;
}
}
๋ค์์ ์๋น์ค ์์ค ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค.
public class UserService {
static void setUserBusy(User user){
user.setBusy(true); //ะดะตะปะฐะตะผ ะตะณะพ ะทะฐะฝัััะผ
//ะธ ะพะฑะฝะพะฒะปัะตะผ ะตะณะพ ะฒ ะะ
Factory.getInstance().getUserDAO().updateUser(user);
}
}
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ํ ์ฝ๋๊ฐ ์์ฑ๋์์ผ๋ฉฐ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ ๋ คํ์ฌ ๊ฒ์ ๋ก์ง์ ๋ค์ ์์ฑํ์ต๋๋ค. ๋จผ์ , ์ฃผ์ ์คํ ๋ฐฉ๋ฒ์ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค Main
. ์ด๋ ๊ฒ์์ ์์ํ๊ฑฐ๋ ํต๊ณ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ ๋ฉ๋ด์ธ ์ ์ด ํด๋์ค๋ง ๋ฉ๋๋ค. GameLogic
๊ฒ์์ ๋ชจ๋ ๋
ผ๋ฆฌ๋ฅผ ์ค๋ช
ํ๊ณ ๊ฒฝ๊ธฐ์ฅ์ ํ์ธํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค . ๊ทธ๋ ๊ฒ์์ด ๋๋ ํ ๊ฒฝ๊ธฐ์ฅ ๋ฐ ํ๋ ์ด์ด ํต๊ณ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๋ ๊ฒ์ ์๋น์ค ๋ ์ด์ด์ ์์ํฉ๋๋ค. ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐฐ์ด ํํ๋ก ๊ฒฝ๊ธฐ์ฅ์ ํฌํจํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์์ง๋ง ์ด ๋จ๊ณ์์ ๋๋ ๋ฐํด๋ฅผ ๋ค์ ๋ฐ๋ช
ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ํ๋๊ฐ int, ์ฆ 9๋ก ํฌํจ๋์ด ์์ต๋๋ค. -ํด๋์ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ๋ก ๊ตฌ๋ฌธ ๋ถ์๋๋ ์ซ์์
๋๋ค GameLogic
. ์ด ๋ฐฉ๋ฒ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. ๊ฒ์์ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. :) ๋ชจ๋๊ฐ JAVA๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ํ์ด์ ๋น๋๋ค! ์ฌ๊ธฐ์ ํ๋ก์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค .
GO TO FULL VERSION