Java | DB insert
- -
์ต๊ทผ์ ์๋ฐ์ ํฌ์คํ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ฐฐ์ ๋ค.
์๋ฐ๋.. ์ฌ์ ์ค์ ์ด ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๋ค..
๊ทธ๋งํผ ๋ํ ์ผํ๊ณ ์๋ฌ๋ฅผ ์ต์ํํ ์ ์๋ค..
์์์ ๋ค ํด์ฃผ๋ python, djang ๊ฐ ๋ณด๊ณ ์ถ์ด์ก๋ค..
ํผ์์ ์ค์ ํ ์ ์๋ ์ค๋ ฅ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆด ๋ฏ ํ๋ค..
๊ทธ๋๋ ์ด์ฌํ ํด๋ณด์.
+ 2023. 2. 28. ์ถ๊ฐ๊ธ)
๊ณต๋ถ์ฉ์ผ๋ก ๋จ๊ธด ๊ธ๋ก์จ ๋ณด๋ฌ ์ค์ ๋ถ๋ค์๊ฒ๋ ํฐ ๋์์ด ๋์ง ๋ชปํ ์๋ ์์ต๋๋ค.
์ ๊ทธ๋ฅ ์ด๋ ๊ฒ ๊ณต๋ถํ๋๊ฐ๋ณด๋ค ํ๊ณ ๋ด์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค
๋ณต์ต
1. HTML(.html)
๊ฐ๋จํ html ์ ๋ง๋ค์ด์ ์ ๋ ฅ๊ณผ ๋ณด๋ด๊ธฐ ๋ฒํผ์ ๋ง๋ค์๋ค.
<form action="test-input-post" method="post">
<h3>์
๋ ฅํ์ธ์ 1 : <input id="test-input1" name="testInput1" type="text" /></h3>
<h3>์
๋ ฅํ์ธ์ 2 : <input id="test-input2" name="testInput2" type="text" /></h3>
<h3>์
๋ ฅํ์ธ์ 3 : <input id="test-input3" name="testInput3" type="text" /></h3>
<button type="submit">๋ณด๋ด๊ธฐ</button>
</form>
- action : controller ์์ ๋ฐ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๋ค ex) test-input-post.do
- method : get, post ํ์ ์ ์ค์ ํ๋ค.
- ํ์ผ๋ช : home.jsp
2. controller(.java)
1) html ๊ฒฝ๋ก๋ฅผ ์ค์
- ์กฐ๊ฑด : ๊ธฐ๋ณธ๊ฐ ( / ) ์ผ๋ก ํ์ด์ง ์ด๋
- ํ์ผ๋ช : HomeController.java
@Controller
@RequestMapping("/")
@RequestMapping(value = "/test-page.do", method = RequestMethod.GET)
public String testPageGet(Locale locale, Model model) {
return "home";
}
2) html ์์ ๋ณด๋ด๋ ์ ํธ๋ฅผ controller ์์ ๋ฐ์ ์ ์๋์ง ํ ์คํธ
- form ํ๊ทธ์ action ๊ฒฝ๋ก(test-input-post )๋ก ์ ํธ ๋ณด๋ด๊ธฐ
- @ResponseBody ๋ฅผ ์ฌ์ฉํด์ ์ ์๊ฒฝ๋ก๋ก ์ ์ด๋ํ๋์ง ํ์ธ
- ์ ์ ํ์ธ์ด ๋์๋ค๋ฉด ์ง์์ค๋ค.
@ResponseBody
@RequestMapping(value = "/test-input-post.do", method = RequestMethod.POST)
public String testPagePost(Locale locale, Model model) {
return "home";
}
3. DB ํ ์ด๋ธ ์์ฑ(dbeaver)
- ๊ธ์ด์ด๋ postgresql ๋ฅผ ์ฌ์ฉ
- ํธ์ง๊ธฐ๋ DBeaver ์ฌ์ฉ
1) db table ์ ๋ง๋ค๊ธฐ ์ํด ์ปฌ๋ผ์ ์ค๊ณ
2) table ์ ์์ฑํ๊ณ ์ค๊ณํ ์ปฌ๋ผ์ ์ถ๊ฐ
3) ์ผ๋ฐ์ ์ผ๋ก table ์๋ ๊ณ ์ ์ id ๊ฐ์ด ์๋ค.
ํ์ง๋ง ์์ ๋ณด์ด๋ table ์๋ id ๋ฅผ ๊น๋นกํ๊ณ ๋ฃ์ง ์์๋ค. id๋ ์ถ๊ฐํด์ฃผ์.
- ๊ณ ์ id ์๊ฐํด๋ณด์์ผํ ๊ฒ
- ๊ณ ์ ๊ฐ์ธ id๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ฐจ์ ์ผ๋ก ๋์ด๋์ผํ๋ค.
- ์ปฌ๋ผ id ๋ง ์ถ๊ฐํ ์ํ๋ผ๋ฉด์ ์ ์ฅํ๋ ค๊ณ ํด๋ ์ค๋ฅ๊ฐ ๋ ์ ์๋ค.
- id ์ปฌ๋ผ์ ์ค์ ์ด ํ์ํ๋ค.
4) ์ค์ ๋ฐฉ๋ฒ
(1) dbeaver ์ sql ํธ์ง๊ธฐ๋ฅผ ์คํํ๋ค.
(2) ํด๋น table ์ DDL ์ ๋ณต์ฌํ๊ณ ๋ถ์ธ๋ค.
(3) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ค(Sequence)๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ์ ๊น! ์ํ์ค๋?
- ์ ์ผ(UNIQUE)ํ ๊ฐ์ ์์ฑํด์ฃผ๋ ์ค๋ผํด ๊ฐ์ฒด์ด๋ค.
- ์ํ์ค๋ฅผ ์์ฑํ๋ฉด ๊ธฐ๋ณธํค์ ๊ฐ์ด ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ปฌ๋ผ์ ์๋์ ์ผ๋ก ์์ฑ ํ ์ ์๋ค.
- ๋ณดํต PRIMARY KEY ๊ฐ์ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ Cache๋์์ ๋ SEQUENCE ๊ฐ์ ์ก์ธ์ค ํจ์จ์ด ์ฆ๊ฐ ํ๋ค.
- SEQUENCE๋ ํ ์ด๋ธ๊ณผ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฅ๋๊ณ ์์ฑ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ๋์ SEQUENCE๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ์์ ์ธ ์ ์๋ค.
- ํ๋ง๋๋ก ๊ณ ์ id ๊ฐ์ ๋ค๋ฃจ๊ธฐ ์ํด ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐ์์ผ์ฃผ๋ ์ค๋ผํด์ ๊ฐ์ฒด์ด๋ค. (๋๋ ์ค๋ ์ฒ์ ์์๋ค..)
(4) ํธ์ง๊ธฐ์ ์ ๋ ฅํ ์ํ์ค๋ฅผ ์คํ์ํค๋ฉด, ์ํ์ค ํด๋์ ํจ๊ป ์ํ์ค ๋ด์ฉ์ด ์ถ๊ฐ๋๋ค.
(5) ์ถ๊ฐ๋ ์ํ์ค๋ฅผ id ์ปฌ๋ผ์ ์ ์ฉํ๋ค.
(6) ์ํ์ค๊ฐ ์ ์ฉ๋์ง ์์ table ์ ์ญ์ ํ๊ณ ํธ์ง๊ธฐ์์ ์์ ๋ฌธ๋ฒ์ ์ ์ฉํ ๋ค์ CREATE TABLE ๋ฌธ๋ฒ์ ์คํํ๋ค.
(7) ์ํ์ค๊น์ง ์ ์ฉํ๋ค๋ฉด ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด๋ณด๊ธฐ.
- insert into " table ๋ช " () ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค.
- id ๋ ์ํ์ค๋ก ์๋ ์ฆ๊ฐ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ฃ์ง ์๋๋ค.
- values ๋ ์ปฌ๋ผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ๋๋ค.
๋ฐ์ดํฐ ์ ๋ ฅํ๊ธฐ ์คํ |
์ ์ ์คํํ ํ๋ฉด |
(8) DB์ค์ ๋!
4. VO ์ธํ
๋ค์ ์ดํด๋ฆฝ์ค๋ก ๋์์์ DB ์ ์ฐ๋ํ๊ธฐ ์ํด ์ค์ ์ด ํ์ํ๋ค.
๋ฐฐ์ด๋ฐ๋ก ํด๋ณธ๋ค๋ฉด
VO > mappers > service(interface + impl) > DAO ์์ผ๋ก ํด๋ณผ ์๊ฐ์ด๋ค. (๊ฐ์ธ์ ์ฐจ๊ฐ ์๋ค.)
1) VO ์์ฑ
๋ณ๋ vo ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ค.
ํ๋ก ํธ์์ ๋ฐ์์ฌ name ์ ์ค์ ํ๋ค.
name = ์ ๋๋๋ก ์นด๋ฉ์ผ์ด์ค๋ก ์์ฑํ๋ค.
VO ์์ ์์ฑํ class ์์ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
package com.company.common.vo;
public class TestSettingVO {
// ํ๋ก ํธ์์ ๋ฐ์์ฌ name ๊ฐ์ ์ค์ ํด์ค๋ค.
private String test_input1;
private String test_input2;
private String test_input3;
}
private ์ ์์ฑํ๋ค๋ฉด source > Generate Getters and Settings ๋ฅผ ๋๋ฅด๊ณ ,
(์ปค์๋ private ๋ฐ์ ๋๊ณ ์คํํ์.)
์ ์ ์คํํ๊ฒ ๋๋ฉด,
์ด์ ๋ฐ์ ๋ฐ์ดํฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ผ๋ ์ ๋ฐ์์ค๋์ง ํ์ธํ๋ค.
source > Generate toString() ์ ํด๋ฆญํ๋ค.
๋์ผ๋ก ๋ณด๊ธฐ ์ํด controller ์์ ์ค์ ํด์ค๋ค.
์ ์ฅํ๊ณ ์๋ฒ๋ฅผ ์ฌ์์ํ๊ณ ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ๋ณด๋ฉด console ์๋ ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
์ ๋ฐ์์ก๋์ง๊น์ง ํ์ธํ์ผ๋ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ์.
5. mappers ์ธํ
mappers ์ค์ ์ sqlmap ๋ฐ๋ก ์๋ ํ์ ํ์ผ์ธ mybatis-config ์ mappers ํ์ ํ์ผ example_SQL_psql ๋ฅผ ๋ณต์ฌํด์ ์ค์ ํ๋ค.
1) mybatis-config ์ค์
VO ๊ฐ์ฒด๋ฅผ ์ฃผ์์ฒ๋ฆฌ๋ ์ฝ๋๋ก ์ค์ ํด์ค๋ค.
๊ทธ ๋ค์์ผ๋ก mappers ์ example SQL psql ํ์ผ์ ๋ณต์ฌํด์ ์๋ก์ด ์ด๋ฆ์ผ๋ก ์์ฑ ๋ฐ ์ค์ ํ๋ค.
<resultMap> ์ ์ปจํธ๋กค ์คํ์ด์ค๋ฐ๋ก ์๋์์ฑ์ ์ด์ฉํ์.
- type : VO ์ด๋ฆ
- id : ๊ณ ์ ์ด๋ฆ
๊ทธ ๋ค์์ผ๋ก DB๋ก insert ์ฝ๋๋ฅผ ์ค์ ํ๋ค.
6. service ์ธํ
๋จผ์ service ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ค.
๊ทธ ๋ค์์ผ๋ก impl ๊ตฌ์ฑ
์ฌ๊ธฐ์๋ถํฐ๋ DAO ์ Service ๋ฅผ ๋ฐ๋ก ์งํํ๋ค.
1) DAOImpl
- @Repository(value="TestSettingDAO") ์ค์
- extends EgovAbstractMapper ์ผ๋ก insert ํ์ฑ
- return insert() ์ค์
- ~psql.xml ์์ DB insert ํ๋ id ๊ฐ์ ์ค์ ํ๋ค.
2) ServiceImpl
- DAO ๋ก ๋ฐ๋ก ๋์ด๊ฐ๋ ์ค๊ณ์ Service ๋ฅผ ์ด์ฉํด์ ํ๋ฒ ์ค๊ฐ์ ๊ฑฐ์น๊ฒ ์ค๊ณํ๊ธฐ ์ํ ๊ตฌ๋ถ?
- ์ข ๋ ๋ช ํํ๊ฒ ๊ณต๋ถ ํ์..
- @Service(value=" * ") ์ค์
- @Resource(name=" * ") ์ค์
- private ~DAO ๊ฐ์ฒด๋ช +DAO; ์ค์
- return ~DAO ๊ฐ์ฒด insertTestSettingOne() ์ค์
7. controller VO ์ค์
1) @Resource ๋ฅผ ์ฌ์ฉํ์ฌ ~Service ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๋ค.
2) controller.java ํ์ผ์์ vo ๋ฅผ ์ค์ ํ๋ค
3) ๊ฐ์ฒด๋ฅผ ๋ณ์๋ก ๋ถ๋ฌ์ค๊ณ ์ ํธ๋ฅผ ์ ๋ถ๋ฌ์ค๋์ง ํ์ธํ๋ค.
- ๋ฆฌ์์ค๋ก ๋ฐ์ private ๊ฐ์ฒด ์์ ์๋ insertTestSettingOne์ ํจ์๋ฅผ ๋ถ๋ฌ์ค๊ณ parameterType ์ผ๋ก ๋ฐ์ VO ์ ์ ์ฅ๋ String์ ๋ถ๋ฌ์จ๋ค.
- print ๋ฅผ ํตํด์ ๊ธฐ๋ณธ ๋ณ์๋ฅผ ๋ฃ์ ๊ฒฝ์ฐ 0 ๊ณผ 1๋ก ์ ํธ๋ฅผ ์ ๋ฐ๋์ง ํ์ธํ ์ ์๋ค.
- ์ฐธ๊ณ : ๋๋ ๋ณด๋ด๊ธฐ ํ ํ์ด์ง๋ฅผ ๋ค์ ๋ถ๋ฌ์ค๊ณ ์ถ์ด์ redirect ๋ฅผ ์ฌ์ฉํ๋ค.
8. ์คํ
์ดํ์๋ post ์์ ๋ค์ํ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์ํ๋ return ๋ฅผ ์ค ์ ์๊ณ , Service ์์ insert ๊ธฐ๋ฅ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์๋ฒ๋ ๊ธฐ๋ฅ์ ๊ด๋ จํ ๊ฒ๋ค์ ์ ์ฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์ด ๊ธ์ ์์ฑํ๋๋ฐ๋ง ํ๋ฃจ ๊ผฌ๋ฐ ๊ฑธ๋ ธ๋ค.
์ด์ ๋ ํผ์ ํ๋ผ๊ณ ํ๋ฉด ์ด์ ๋๊น์ง๋ ํผ์ ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ,
์์ง๋ ๊ตฌ์กฐ์์ ์ดํด๋๊ฐ ๋ถ์กฑํด์ ํด๋ฒ๋ฆ ํ๋ฉฐ ์ ์ํด์ผํ ๊ฒ ๊ฐ๋ค.
์๋ฐ DB insert ๋!
'๐ป ๊ณต๋ถ ๊ธฐ๋ก > โ Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java | ์๋ฐ (0) | 2023.01.06 |
---|---|
Java | Java, Python ์ ์ฐจ์ด์ (0) | 2023.01.06 |
Java | Java ํน์ง (0) | 2023.01.06 |
Java | ํ์ผ ์ฝ๊ณ ์ฐ๋ ๋ฉ๋ชจ์ฅ (0) | 2023.01.06 |
Java | List ๋ชจ๋ ์์ ์ถ๋ ฅ (0) | 2023.01.03 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค