[Groovy] Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext ์๋ฌ ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ ๊ด๋ จ ๊ธ - [Environment·Tool] - IntelliJ์์ Groovy ํ๋ก์ ํธ ์์ฑํ๊ณ ํ ์คํธ ์ฝ๋ ์คํํ๊ธฐ [Groovy] Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext ์๋ฌ ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ Groovy ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์ ๋ ์ด์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด, Information:Groovyc: While compiling testGroovy:java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtension.. 2020. 2. 26. IntelliJ์์ Groovy ํ๋ก์ ํธ ์์ฑํ๊ณ ํ ์คํธ ์ฝ๋ ์คํํ๊ธฐ IntelliJ์์ Groovy ํ๋ก์ ํธ ์์ฑํ๊ณ ํ ์คํธ ์ฝ๋ ์คํํ๊ธฐ ๐ก IntelliJ IDEA 2019.3 Ultimate / JDK 8 / Groovy 3 1. Groovy SDK ๋ค์ด๋ก๋ https://groovy.apache.org/download.html ์ ์ ์ํ๋ค. Download 3.0.1์ ํด๋ฆญํด์ ๋ค์ด๋ก๋๋ฐ๋๋ค. SDK๋ zipํ์ผ๋ก ์ ๊ณต๋๋ค. ์ ๋นํ ๋๋ ํ ๋ฆฌ์ ์์ถ์ ํ์ด์ค๋ค. SDK ๋๋ ํ ๋ฆฌ ํ์์ groovy ํด๋๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌํ๋ฉด ์ข๋ค. 2. Groovy Project ์์ฑ New Project ๋๋ New Module ์ฐฝ์ ์ด๊ณ ์ผ์ชฝ์์ Groovy๋ฅผ ์ ํํ๋ค. ์์ง Groovy SDK๋ฅผ ๋ฑ๋กํ์ ์ด ์์ผ๋ฉด Groovy Library์ none์ด๋ผ๊ณ ํ์๋ ๊ฒ์ด๋ค. Groov.. 2020. 2. 26. MyBatis ๋์ SQL - <choose>์ <set>์ ์ฌ์ฉํ์ฌ ๋์ SQL ๋ง๋ค๊ธฐ ๊ด๋ จ ๊ธ - [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ - MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ - MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ - MyBatis์ Log4J ์ฐ๋ํ๊ธฐ ์ ๋ชฉ MyBatis์ ๋์ SQL ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ๋์ SQL๋ฌธ์ผ๋ก ์ฌ๋ฌ ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ORDER BY ์ ์ ๋ฐ๊ฟ์ผ ํ๊ฑฐ๋ ๊ฒ์ ์กฐ๊ฑด์ ๋ฐ๋ผ WHERE ์ ์ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ ๋์ SQL ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ SQL๋ฌธ์ ๋ง๋ค ์ ์๋ค. ํ - MyBatis ๋์ SQL ์ข ๋ฅ ๋์ SQL ์๋ฆฌ๋จผํธ ์ค๋ช SQL ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ SQL๋ฌธ์ ๋ฐํํ๋ค. SQL SQL SQL ๊ฒ์ฌํ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ฉ ์๋ฐ์ if-else๋ฌธ๊ณผ ์ ์ฌํ๋ค.. 2020. 2. 26. MyBatis์ Log4J ์ฐ๋ํ๊ธฐ ๊ด๋ จ๊ธ - [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ - MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ - MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ MyBatis์ Log4J ์ฐ๋ํ๊ธฐ MyBatis์ log4j๋ฅผ ์ฐ๋ํ์ฌ MyBatis์ ๋ก๊ทธ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. MyBatis์ ๋ก๊ทธ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด MyBatis์์ ์คํํ๋ SQL๋ฌธ, ํ๋ผ๋ฏธํฐ ๊ฐ, ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์๋ค. ํนํ ๋์ SQL๋ฌธ์ด ์คํ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฌ๋ผ์ง๋์ง ํ์ธํ ์ ์์ด ๋๋ฒ๊น ์ ๋งค์ฐ ์ ์ฉํ๋ค. 1. MyBatis ์ค์ MyBatis ์ค์ ํ์ผ์ ๋ก๊ทธ ์ถ๋ ฅ ์ค์ ์ ์ถ๊ฐํ๋ค. ํ์์ ๋ฅผ ์ถ๊ฐํ๊ณ ์ ์ฌ์ฉํด์ ๋ก๊ทธ ์ถ๋ ฅ๊ธฐ๋ฅผ ์ง์ ํ๋ค. MyBatis๋ ์ฌ๊ธฐ.. 2020. 2. 25. [IntelliJ] SQL Dialect์ Data Source ์ค์ ๋ฐฉ๋ฒ [IntelliJ] SQL Dialect์ Data Source ์ค์ ๋ฐฉ๋ฒ ๐ก IntelliJ IDEA 2019.3 IntelliJ์์ MyBatis๊ฐ์ SQL mapper ๊ธฐ๋ฐ์ framework๋ฅผ ์ฌ์ฉํ ๋ SQL mapper xml ํ์ผ์์ 'No data source are configured to run this SQL and provide advanced code assistance.' ์ด๋ 'SQL dialect is not configured.' ๋ผ๋ warning์ด ๊ฒ์ถ๋ ์ ์๋ค. Warning(๊ฒฝ๊ณ ) ์ด๋ฏ๋ก ๋ฌด์ํด๋ ๊ฐ๋ฐํ๊ณ ์คํํ๋๋ฐ ๋ฌธ์ ๋ ์๋ค. ํ์ง๋ง IntelliJ์ SQL dialect์ data source๋ฅผ ์ค์ ํด์ฃผ๋ฉด ํด๋น database์ ๋ํ ์ฝ๋ ๊ฒ์ฆ, SQL ๋ฌธ๋ฒ ๊ฒ.. 2020. 2. 24. MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ ๊ด๋ จ ๊ธ - [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ - MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ MyBatis ํ๋ ์์ํฌ๊ฐ ์ฐธ์กฐํ๋ XML ํ์ผ์ MyBatis ์ค์ ํ์ผ๊ณผ SQL mapper ํ์ผ๋ก ๋๋์ด์ง๋ค. ๋ณธ ํฌ์คํ ์์๋ MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃฐ๊ฒ์ด๋ค. MyBatis๋ ์์ฒด ์ปค๋ฅ์ ํ ๊ตฌ์ถ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ค์ ํด ๋๊ณ ๊ฐ๋ฐ, ํ ์คํธ, ์ด์์ ๋ฐ๋ผ ์ฌ์ฉํ DB ์ง์ SELECT ๊ฒฐ๊ณผ ์บ์ฑ VO(Value Object, ๊ฐ ๊ฐ์ฒด)์ alias ๋ถ์ฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ฐ๋ผ์ MyBatis ์ค์ ํ์ผ์๋ ํด๋น ๊ธฐ๋ฅ์ ์ํํ๋ ๋์ ํ๊ฒฝ์ ์ค์ ํ๋ค. ๋ค์์ MyBatis ์ค์ ํ์ผ์.. 2020. 2. 24. MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ ๊ด๋ จ ๊ธ - [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ MyBatis ์ฌ์ฉ ๋ชฉ์ ์ค ํ๋๋ DAO๋ก๋ถํฐ SQL๋ฌธ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค. ๋ถ๋ฆฌ๋ SQL๋ฌธ์ SQL mapper ํ์ผ์ ์์ฑํ๋ฉฐ DAO์์๋ SqlSession ๊ฐ์ฒด๊ฐ SQL mapper ํ์ผ์ ์ฐธ์กฐํ๊ฒ ๋๋ค. ๋ค์์ MyBatis SQL mapper ํ์ผ์ ์์ด๋ค. 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 47 48 49 select PNO, PNAME, STA_DATE, END.. 2020. 2. 23. [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ ๊ด๋ จ ๊ธ - MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ - MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ ํ๊ฒฝ ๋ฐ ๋ฒ์ ์ ๋ณด IntelliJ IDEA 2019.3 Ultimate, JDK 11, Tomcat 9, MyBatis 3 MyBatis Persistence framework ์ค ํ๋์ธ MyBatis๋ฅผ ์ฌ์ฉํ๋ฉด JDBC ํ๋ก๊ทธ๋๋ฐ ์์ด DB์ ์ฐ๋ํ ์ ์๋ค. ๊ฐ๋ฐ์๊ฐ JDBC API๋ฅผ ์ง์ ํธ์ถํ์ง ์๊ณ MyBatis๊ฐ ๋์ ํธ์ถํ๋ ๋ฐฉ์์ด๋ค. MyBatis์ ํต์ฌ์ ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์๊ฐ ์ฝ๋๋ก ์์ค ์ฝ๋์ ๋ด์ฅ๋ผ์๋ SQL์ ๋ณ๋์ ํ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค. ๋ํ ๋จ์ํ๊ณ ๋ฐ๋ณต์ ์ธ JDBC ์ฝ๋๋ฅผ ์บก์ํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋.. 2020. 2. 23. [JAVA/์น] Annotation๊ณผ Reflections ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์๋ฐ ๋น ๊ด๋ฆฌํ๊ธฐ [JAVA] Annotation๊ณผ Reflections ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์๋ฐ ๋น ๊ด๋ฆฌํ๊ธฐ Java Annotation(์๋ฐ ์ด๋ ธํ ์ด์ ) ์ด๋ ธํ ์ด์ ์ ์ปดํ์ผ, ๋ฐฐํฌ, ์คํ ์ ์ฐธ์กฐํ ์ ์๋ ํน๋ณํ ์ฃผ์์ด๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ํด๋์ค, ํ๋, ๋ฉ์๋์ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ๋ฑ๋กํ ์ ์๋ค. ์ด๋ ธํ ์ด์ ์ ์ด์ฉํด์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์๋ ๋ ์์ฑ์ด ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํด๋ณด์. ์ด๋ ธํ ์ด์ ์ ์ Component.java 1 2 3 4 5 6 7 8 9 /*์ด๋ ธํ ์ด์ ์ ์ง ์ ์ฑ - RetentionPolicy.RUNTIME: * ํด๋์ค ํ์ผ์ ๊ธฐ๋ก๋จ * ์คํ ์์ ์ ์ง๋จ * ์คํ ์ค ํด๋์ค์ ๊ธฐ๋ก๋ ์ด๋ ธํ ์ด์ ๊ฐ ์ฐธ์กฐ ๊ฐ๋ฅ * */ @Retention(RetentionPolicy.RUNTIME.. 2020. 2. 21. JAVA ์น ํ๋ก์ ํธ์์ Properties ํ์ผ ํ์ฉํ๊ธฐ JAVA ์น ํ๋ก์ ํธ์์ Properties ํ์ผ ํ์ฉํ๊ธฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ํ์๋ง์ ๊ฐ์ ธ์์ผํ๋ ์ ๋ณด์ ๊ฐ์ ๊ฒ๋ค์ ํ๋กํผํฐ ํ์ผ์ ์์ฑํด์ ๊ด๋ฆฌํ ์ ์๋ค. ์น ํ๋ก์ ํธ์์ ํ๋กํผํฐ ํ์ผ์ ์์ฑํด์ ๊บผ๋ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ํ๋กํผํฐ ํ์ผ ์์ฑํ๊ธฐ ํ๋กํผํฐ ํ์ผ์ ํ ๋ผ์ธ์ key=value ํ์์ผ๋ก ์์ฑํ๊ณ .properties ํ์ฅ์๋ฅผ ๋ถ์ฌ ์ ์ฅํ๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค. ํ๋กํผํฐ ํ์ผ ๋ก๋ฉ ๋ฐ ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ(์ฝ๊ธฐ) java.util.Properties ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ํ๋กํผํฐ ํ์ผ์ ๋ค๋ฃฐ ์ ์๋ค. Properties๋ key=value ํ์์ ํ ์คํธ ํ์ผ์ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ ํด๋์ค์ด๋ค. ์๋์ ๊ฐ์ด ํ๋กํผํฐ ํ์ผ์ ๋ก๋ํ์ฌ ๋ด์ฉ์ ๊ฐ์ ธ์ฌ ์ ์๋ค. 1 2 3.. 2020. 2. 20. ๋ฆฌํ๋์ API๋ฅผ ์ด์ฉํ Front Controller ์๋ํ ๋ณธ ๋ด์ฉ์ ์คํ๋ง ํ๋ ์์ํฌ์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋๋ฐ ๋์์ด ๋๋ค. ๋ฆฌํ๋์ API๋ฅผ ์ด์ฉํ Front Controller ์๋ํ ์๋์ ๊ฐ์ ์ ๊ท ํ์(ํ์)์ ๋ฑ๋กํ๋ ํผ์ด ์๋ค. ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ ๋ ฅํ๊ณ [๋ฑ๋ก] ๋ฒํผ์ ํด๋ฆญํด์ ์ ๊ท ํ์ ๋ฑ๋ก์ ์์ฒญํ๋ฉด ์์ ์ ์ฒ๋ฆฌํ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ๋ค. 1 2 3 4 5 6 7 8 9 10 11 12 // ๋งค๊ฐ๋ณ์๊ฐ์ ๊บผ๋ด์ Map์ ๋ด์ model.put("student", new Student() .setStudentNo(req.getParameter("student_no")) .setStudentName(req.getParameter("student_name")) .setAddress(req.getParameter("address")).. 2020. 2. 20. Tomcat ์๋ฒ DataSource ์ค์ ๋ฐฉ๋ฒ (+JNDI) ํ๊ฒฝ ์ ๋ณด IntelliJ IDEA 2019.3 Ultimate, Amazon Corretto 11, Tomcat 9, JDBC 4.2, ์์กด์ฑ ๊ด๋ฆฌ ํ๊ฒฝ X Tomcat ์๋ฒ DataSource ์ค์ ๋ฐฉ๋ฒ (+JNDI) โ ํฌ์คํธ ์๋จ์๋ DataSource, JNDI์ ์ด๋ก ์ ์ธ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ค์ , ์ ์ฉ ๋ฐฉ๋ฒ์ ๋ณด๋ ค๋ฉด ์คํฌ๋กค์ ๋ฐ์ผ๋ก ๋ด๋ ค 'DataSource ์ ์ฉ'๋ถํฐ ๋ณด๋ฉด ๋ฉ๋๋ค. DataSource๋ JDK 1.4๋ถํฐ ํฌํจ๋ javax.sql ํจํค์ง์ API์ด๋ค. DataSource๋ฅผ ์ด์ฉํ์ฌ Java EE ์๋ฒ(์: ํฐ์บฃ ์๋ฒ)์์ DB ์ปค๋ฅ์ ํ์ ๊ด๋ฆฌํ ์ ์๋ค. javax.sql ํจํค์ง javax.sql ํจํค์ง๋ java.sql ํจํค์ง์ ๊ธฐ๋ฅ์ ๋ณด์กฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ์ฅ.. 2020. 2. 17. ์ด์ 1 ยทยทยท 7 8 9 10 11 12 13 ยทยทยท 17 ๋ค์