spring12 (23.01.16.)Spring ํ๋ ์์ํฌ : ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ - ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์ธ์ ์ด ๋ฌ๋ผ ์ธ์ฆ ์ค๋ฅ ๊ณ ์น๊ธฐ ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ -์ธ์ฆ์ ์ ์ฒญํ ๊ธฐ๊ธฐ ์ด์ธ์ ๊ธฐ๊ธฐ์์๋ ์ธ์ฆ ๋ต๋ณ ๋ฉ์ผ ํ์ธ -์ด๋ฉ์ผ์ ์ธ์ฆ์ฉ ์ํธ ๋ฌธ์์ด์ ์ ๋ฌ -์ด๋ฉ์ผ ์์ ์๊ฐ ๋ฉ์ผ์ ์ด๊ณ ๋งํฌ ํด๋ฆญ > ์ํธ๋ฌธ์์ด์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด์ค๋ค. -์ด๋ฉ์ผ์ ๋ณด๋ผ๋์ ์๋ฒ์ธก ๋ฉ์๋์ ์ํธ๋ฌธ์์ด์ ๋ค์ ๋ฐ์ ๋์ ๋ฉ์๋๋ ๋ค๋ฅด๋ค. -์ด์ฉ์์ ์ธ์ ์ ์ํธ๋ฌธ์์ด์ ๊ธฐ์ต์์ผ๋๊ณ ๋์์์ ๋์ ์ํธ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. -์์ ์ ์ฐจ๊ฐ ๋ชจ๋ ๋์ผ ์์คํ ์์ ์คํ๋๋ค๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค. -ํ์ง๋ง ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์๋ต์ ๋๋ฅด๋ฉด ์ธ์ ์ด ๋ค๋ฅธ ์ธ์ ์ผ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ด ์๋ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ ๋งํฌ๋ฅผ ๋๋ฅผ ๋ ์ธ์ id๊น์ง ๊ฐ์ด ์ค์ ํด๋น ์ธ์ id์ ์๋ ๋ฌธ์์ด๊ณผ ํจ๊ป ๋น๊ตํ๊ฒ๋ ํด์ผํ๋ค. ๋จผ์ ๋ฉ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ @ServletComponentScan์.. Framework/Spring Framework 2023. 1. 18. (23.01.14.)Spring ํ๋ ์ ์ํฌ : ์๋ฌ ํ์ด์ง ๋ง๋ค๊ธฐ ์๋ฌ๊ฐ ๋จ๊ฒ ๋๋ฉด ์น์ ์ ๋ชจ๋ฅด๋ ์ด์ฉ์๋ ๋นํฉํ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฌ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ์๋ฌํ์ด์ง๋ฅผ ๊พธ๋ฉฐ์ ์ด์ฉ์์๊ฒ ์ ์ค๋ช ํ ์ ์๋ค. ErrorHandler.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.http.HttpStatus; i.. Framework/Spring Framework 2023. 1. 17. (22.12.29)Spring ํ๋ ์์ํฌ: Thymeleaf, JPA, Spring ํ๋ ์์ํฌ์ dependencyํ์ฌ ํ์ฉ ๋ฐ CRUD โโ Thymeleaf์ JPA๋ฅผ ์ด์ฉํ CRUD โโ - JSP + EL - thymeleaf ( html + Spring EL ) Natural Templating: DB, Front End 1. Spring boot ํ๋ก์ ํธ ์๋ก ์์ฑ 2. application.properties, pom.xml ๋ณต์ฌ 3. application.properties, pom.xml์ thumeleaf ๊ด๋ จ ์ค์ ์ถ๊ฐ โโThymeleaf ์ค์ ํ๊ธฐโโ -application.properties # Thymeleaf spring.thymeleaf.cache=false spring.thymeleaf.prefix=classpath:/templates/ templates๋ผ๋ ํด๋ ๊ฒฝ๋ก์ spring.thymeleaf.suff.. Framework/Spring Framework 2022. 12. 29. (22.12.28)Spring ํ๋ ์์ํฌ: JPA ์ฐ๋ํ์ฌ ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ (๊ธฐ์ด) Spring ์์ JPA๋ก ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ Spring DataBase - JDBC - JdbcTemplate - MyBatis - JPA(Java Persistence API) JPA ์ค์ -application.properties -pom.xml : dependency ์ถ๊ฐ https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa VO CLASS JPA์์ VO๊ฐ ํ์ํ๋ค : Entity (DB์์ฑ์ ์งํฉ) Entity -> ํ ์ด๋ธ ์์ฑ (DB๋ชจ๋ธ๋งํ ๋ ์ค๊ณ๋จ๊ณ์์ ์ฐ๋ ์ฉ์ด.) - ์ฌ๋ฒ, ์ด๋ฆ, ๋ถ์, ๊ธ์ฌ, ์ ์ฌ ) : JpaRepository์์ ( ๊ธฐ๋ณธ์ ์ผ๋ก CRUD์ ๊ด๋ จ๋๊ฑด ๋ค ๊ตฌํ๋์ด์๋ค.. Framework/Spring Framework 2022. 12. 29. (22.12.27)Spring ํ๋ ์์ํฌ: Mybatis๋ก Spring๊ณผ Oracle ์ฐ๋ํ์ฌ ๊ฒ์ํ ์์ธ๋ณด๊ธฐ, ์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ํ๊ธฐ โโMybatis๋ก Spring๊ณผ Oracle ์ฐ๋ํ์ฌ ๊ฒ์ํ ์์ธ๋ณด๊ธฐ, ์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ํ๊ธฐโโ VOํด๋์ค๋ (22.12.26)๊ฒ์๋ฌผ๊ณผ ๋์ผํ๊ฒ ์ด์ฉํ๋ค. BoardMapper.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 INSERT INTO board(boardid, title, contents, author) VALUES(BOARD_SEQ.NEXTVAL, #{title,jdbcType=VARCHAR}, #{contents,jdbcType=VARCHAR}, #{author,jdbcType=VARCHAR}) IN.. Framework/Spring Framework 2022. 12. 27. (22.12.26)Spring ํ๋ ์์ํฌ: PageHelper๋ฅผ ์ด์ฉํ ๊ณ ์์ค pagination ๊ตฌํ, Mybatis๋ก Spring๊ณผ Oracle ์ฐ๋ํ์ฌ ๊ฒ์ํ ๋ฆฌ์คํธ ๋ณด๊ธฐ โโPageHelper๋ฅผ ์ด์ฉํ ๊ณ ์์ค pagination ๊ตฌํโโ -Oracle : ROWNUM,PageHelper -MySQL : LIMIT 2,3, PageHelper โโPageHelper ์ค์ ํด์ฃผ๊ธฐโโ -application.properties : oralce -pom.xml : dependency , PageHelper Spring boot starter BoardVO.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import java.util.ArrayList; import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; impor.. Framework/Spring Framework 2022. 12. 26. (22.12.23)Spring ํ๋ ์์ํฌ: Mybatis๋ก Spring๊ณผ Oracle ์ฐ๋ํ์ฌ ๊ฒ์ํ, ์ฒจ๋ถํ์ผ ์ฌ๋ฆฌ๊ธฐ BoardVO.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.ArrayList; import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; @Data @ToString @EqualsAndHashCode(exclude= {"title","author","regDate","contents","hit","attList"}) @AllArgsConstructor @NoArgsConst.. Framework/Spring Framework 2022. 12. 25. (22.12.21)GeneratedKeyHolder ์ฌ์ฉํ์ฌ PK ์ ์ฅํ๊ธฐ, MyBatis ์ฌ์ฉํ์ฌ DB์ ์ฐ๊ฒฐํ๊ธฐ โโGeneratedKeyHolder ์ฌ์ฉํ์ฌ KEY๊ฐ์ ์ ํ์ฌ KeyHolder์ ์ ์ฅํ๊ธฐโโ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public boolean addAndGetPK(Emp emp) { GeneratedKeyHolder kh = new GeneratedKeyHolder(); int rows = jdbcTemplate.update((conn)->{ PreparedStatement pstmt; String sql = "INSERT INTO emp2(empno, ename, deptno, sal, hiredate) " + "VALUES(?,?,?,?,?)"; pstmt = conn.prepareStatement(sql, new String[]{".. Framework/Spring Framework 2022. 12. 21. (22.12.16)Spring ํ๋ ์์ํฌ : ์คํ๋ง ํ๋ ์์ํฌ์ ์ค๋ผํด ์ฐ๋ํ๊ธฐ spring framework, oracle , jdbc, ojdbc โโSpring ํ๋ ์์ํฌ ์ค๋ผํด ์ฐ๊ฒฐ ๋ฐฉ๋ฒโโ 1๋ฒ ๋ฐฉ๋ฒ jdbc ์ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(ํ๋ก์ ํธ์ jdbc ๋๋ผ์ด๋ฒ๋ง ๋ฑ๋กํด์ฃผ๊ณ ์ฝ๋ฉ๋ง ํด์ฃผ๋ฉด ๋๋ค.) 2๋ฒ ๋ฐฉ๋ฒ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํด์ฃผ๋ jdbc ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ 3๋ฒ ๋ฐฉ๋ฒ 2๋ฒ ๋ฐฉ๋ฒ + ORM ํ๋ ์์ํฌ(MyBatis) ์ฌ์ฉํ๊ธฐ 4๋ฒ ๋ฐฉ๋ฒ JPA(Java Persistence Api) ์ฌ์ฉํ๊ธฐ โโ1๋ฒ ๋ฐฉ๋ฒ: ํ๋ก์ ํธ์ jdbc ๋๋ผ์ด๋ฒ ์ค์น ํ ์ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒโโ ํ๋ก์ ํธ์ jdbc ๋๋ผ์ด๋ฒ๋ง ๋ฑ๋กํด์ฃผ๊ณ ์ฝ๋ฉ๋ง ํด์ฃผ๋ฉด ๋๋ค. ๋จผ์ jdbc ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ถ์ ํ๋ก์ ํธ์ ์ฐํด๋ฆญํ์ฌ [Build Path] - [Configure Build Path]์ ๋ค์ด๊ฐ๋ค. ๊ทธ๋ค์ Classpath๋ฅผ ์ ํํ๊ณ [Add E.. Framework/Spring Framework 2022. 12. 16. Spring ํ๋ ์์ํฌ : lombok ํ์ฉํ๊ธฐ, Annotation( GetMapping, PostMapping )ํ์ฉํ๊ธฐ โโlombok annotation (lombok ์ฃผ์)โโ @ToString : lombok ๋๋ถ์ Override ํด์ฃผ์ง ์์๋ VOํด๋์ค์์ ๊ทธ๋ฅ ์ธ ์์๊ฒ ๋๋ค. @EqualsAndHashCode(exclude= {"ename", "deptno", "sal","hiredate"}) : lombok ๋๋ถ์ Override ํด์ฃผ์ง ์์๋ VOํด๋์ค์์ ๊ทธ๋ฅ ์ธ ์์๊ฒ ๋๋ค. exclude ํด์ฃผ๋ฉด ํด๋นํ์ง ์๊ฒ ๋๊ณ 4๊ฐ์ง๋ฅผ ๋นผ์ฃผ์์ผ๋ empno๋ง์ผ๋ก eqauls ๋ฅผ ๋น๊ตํ๊ฒ ๋๋ค. @AllArgsConstructor : lombok ๋๋ถ์ ๋ชจ๋ ์๊ท๋จผํธ๋ฅผ ๊ฐ์ง ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ง ์์๋ ๋ด๋ถ์์ ์์์ ๋ง๋ค์ด ์ค๋ค. @NoArgsConstructor : ์๊ท๋จผํธ๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ง ์.. Framework/Spring Framework 2022. 12. 15. (22.12.14)Spring ํ๋ ์์ํฌ : ๋ธ๋ผ์ฐ์ ์์ ๋์ด์จ ํ๋ผ๋ฏธํฐ ๋ฐ๊ธฐ, form ๋ฐ์ดํฐ ๋ฐ๊ธฐ( Spring annotation) โโSpring ํ๋ ์์ํฌ์์ ๋ธ๋ผ์ฐ์ ์์ ๋์ด์จ ํ๋ผ๋ฏธํฐ ๋ฐ๊ธฐโโ spring ํ๋ ์์ํฌ์ ์๋ ์ฌ๋ฌ๊ฐ์ง annotation ์ตํ๊ธฐ ๋ฐฉ๋ฒ 1 : request.getParameter("dan"); ๊ฐ์ฅ ์ ์์ค์ ํ๋ผ๋ฏธํฐ ๋ฐ๋ ๋ฒ ๋ฐฉ๋ฒ 2 : @RequestParam(value="dan", defaltValue="2") (๋ํดํธ ๊ฐ์ ์ค ์ ์๋ค.) ํ๊ด์์ผ๋ก ์์น ํ ๋ถ๋ถ์ด ๊ฒ์ ํ์ํ ๋ถ๋ถ์ ๊ฐ๋ค ๋์ ํด์ฃผ์ด ๊ฐ๋จํ๊ฒ ํํ์ด ๊ฐ๋ฅํด์ง๋ค. ์คํ๊ฒฐ๊ณผ: ๋ฐฉ๋ฒ3 : @PathVariable ( ํจ์ค ์ค์ ์ ํด์ค์ผํ๋ค. @GetMapping("/gugu/{dan}") ) ๋ฐฉ๋ฒ2์ ํ๋ผ๋ฏธํฐ ๋ฐ๋ ์ฐจ์ด์ ์คํ๊ฒฐ๊ณผ : ๋ฐฉ๋ฒ 4 : @PathVariable ์ ์ฐ๋ฉด์ Optional์ ์จ์ ๋ณ์์ ๊ฐ์ด ์๋ ์๋ ๋ฐ๊ธฐ ์ค.. Framework/Spring Framework 2022. 12. 14. (22.12.13)Spring ํ๋ ์์ํฌ : ์ค์น ๋ฐ ์๊ฐ ์ดํด๋ฆฝ์ค์ ์ฐ๋ํด๋ณด๊ธฐ Spring Framework -MVC ํจํด ์ง์ -View : jsp, thymeleaf -Controller ์ปดํฌ๋ํธ : ์๋ธ๋ฆฟ์ด ์๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ๊ฒ ๋๋ค. (์๋ธ๋ฆฟ์ ์คํ๋ง์์ ์ง์) - ํธํ๊ฒ ํด์ฃผ๋ Annotation (์ผ์ข ์ ์ฃผ์)์ ์ ๊ณตํด์ค๋ค. ์์ )@Controller,@Service, @Persistence, @Component ๋ฑ๋ฑ -Eclipse ์ Plugin ์ผ๋ก ์ค์นํ๊ฒ๋๋ค.(STS) -ํ๋ก์ ํธ ๊ด๋ฆฌ์ฉ ํด(Maven)์ด ๋ด์ฅ ๋ผ ์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์์ ์ ์ ํ ํ์ผ์ ๋ฃ์ด ๋๋ ์ผ๋ง์ ํด์ค๋ค. ๋ทฐ๋ก์ jsp๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ค์ ์ด ํ์ํ๋ค. pom.xml ํ์ผ์ dependency ํ๊ทธ๋ฅผ ์ถ๊ฐํด์ผํ๋ค. Spring start boot application.properti.. Framework/Spring Framework 2022. 12. 13. ์ด์ 1 ๋ค์