1๏ธโฃ API Key ์์ฑโก๏ธ API ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ API Key ๋ฅผ ๋ฐ๊ธ๋ฐ์์ผํ๋ค. OpenAI APIAn API for accessing new AI models developed by OpenAIplatform.openai.comโก๏ธ ์์ฑ๋ ํค๋ Client ์ฝ๋ ์ชฝ์์ ๋
ธ์ถ๋๋ฉด ์๋๋ค.2๏ธโฃ API Parameter ์ Authenticationโ API Parameterโ๏ธ model OpenAI APIAn API for accessing new AI models developed by OpenAIplatform.openai.com์ต๊ทผ์ gpt-4 ๊ฐ ๋์์ง๋ง ๋๋ gpt-3.5-turbo ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.โ๏ธ Messagerole : message ์ก์์ ์user : message ..
Spring Boot ๐ฟ
๐ ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ MyBatis ๋ฅผ ํตํด ํ
์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ค๊ฐ LIKE ๋ฌธ์ ์์ฑํ๋ ๊ณผ์ ์์ Query ๊ฐ ์ด๋ป๊ฒ ๋ ๋ผ๊ฐ๋์ง ํ์ธํด๋ณด๊ณ ์ถ์ด์ log ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค. 1๏ธโฃ Log4Jdbc LOg4j2 JDBC ์์กด์ฑ ์ถ๊ฐ maven repository : https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16 // gradle.build implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' ๋ฌผ๋ก ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ณด๋ฉด ์ฝ๊ฒ ์ฐพ์ ์ ์์ง๋ง ๋ฉ์ด๋ธ ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ค๋ก ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ..
๐ ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ MyBatis ์ด๊ธฐ ์ธํ
ํ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ๊ธฐ์กด JPA ์ ๋ค๋ฅด๊ฒ ์์ฑํ๋ ๋ถ๋ถ์ด ํฌ๊ฒ โ 'MyBatis ๋ ๋ฐ๋ก Entity ์ ๊ฐ๋
์ด ์๋ค.' โก 'Repository interface ์์ JpaRepository ๋ฅผ ์์๋ฐ๋ JPA ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ @Mapper ๋ฅผ ์ด์ฉํ ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๋ค.' ์๋๋ฐ, ๊ทธ์ค์์๋ Repository ์ ์ด๋
ธํ
์ด์
์ญํ ์ด ์ด๋ค ๊ฑด์ง ๊ถ๊ธํด์ ์ข ๋ ์์ธํ ์ ๋ฆฌ ํด๋ณด๊ธฐ๋ก ํ๋ค. ๐ ์ด๊ธฐ ์ค์ (๊ณตํต ๋ถ๋ถ) โ ํ
์คํธ ์์ฑ @SpringBootTest class AppTest { @Autowired private AriticleService ariticleService; @Test @DisplayName("๊ฒ์๋ฌผ_๋ฆฌ์คํธ_๋ฐํ")..
๐ ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ Entity ๋ฅผ ์์ฑํ ๋๋ง๋ค ์ปฌ๋ผ์ ๊ด๊ณ๋ฅผ ๋ช
์ํด ์ฃผ์ด์ผ ํ ๋ @ManyToOne ๊ณผ @ManyToMany ์ค ์ด๋ค ๊ฒ์ ์ฌ์ฉํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋์๋๋ฐ QNA ์๋น์ค ๊ธฐ๋ฅ ๋ณต์ต ์ค์ ์ด์ ๊ด๋ จํด์ ์ ์ ๋ฆฌ๊ฐ ๋ ๋ถ๋ถ์ด ์์ด์ ์ฐจ์ด๋ฅผ ๋น๊ตํด๋ณด๊ณ ์ ํ๋ค. ๐ ๊ธฐ๋ณธ Entity ์ ์ โก๏ธ ๋ ๊ด๊ณ์ ์ฐจ์ด๋ฅผ ํ์ธ ํ ์ ์์ ์ ๋๋ง์ ๊ฐ๋จํ Entity ๊ตฌ์ฑ์ด๋ค. โ SiteUser @Entity public class SiteUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true) private String username; private String pass..
๐ ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์คํ์์ผ๋ณผ ๋๋ง๋ค ๋ฐ์ดํฐ๊ฐ์ ํ๋์ฉ ๋ฃ๋ ๊ฒ์ ๋นํจ์จ์ ์ธ ์ผ์ด๋ค. ํนํ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ํ
์คํธ ํด์ผํ ๋๋ ๋งํ ๊ฒ๋ ์์ ๊ฒ์ด๋ค. ํ
์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. 1๏ธโฃ Spring Test ํ์ฉ test ์ค ํ๋๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค. @Test @Rollback(false) // ํ
์คํธ ํ DB ๋ณ๊ฒฝ์ reset ํ์ง ์๊ณ ์ ์ง void ๋๋์_๋ฐ์ดํฐ_์์ฑ() { for (int i=1; i { for (int i=1; i
๐ ํด๊ฒฐํ๊ณ ์ ํ๋ ์ํฉ ์ง๋ฌธ ํผ์ ์์ฑํ์ฌ POST request ๋ฅผ ๋ ๋ฆฌ๋ฉด Controller ์์ ์ ํจ์ฑ์ ํ์ธ ํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด Service ๋ก ๋๊ฒจ ์ ์ฅ, ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ง๋ฌธํผ View ๋ก ๋๊ฒจ์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ ๐ ํด๊ฒฐ ๋ฐฉ๋ฒ โ ์ผ๋จ View ๋ก ๋ถํฐ ๋๊ฒจ๋ฐ์ ๊ฐ์ if null ์กฐ๊ฑด๋ฌธ์ ํตํด ํ์ธ, ๋ฌธ์ ๊ฐ ์์ผ๋ฉด Model ์ ํด๋น ๋ฌธ์ ์ ๋ฉ์ธ์ง๋ฅผ ์ ์ด ์ ์ฅ ํ View ๋ก ๋๊น โก๏ธ ๋๊ฒจ๋ฐ์ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ค์ ๋ํด if ๋ฌธ์ ์์ฑํด์ผํจ์ผ๋ก ์ฝ๋๊ฐ ๊ธธ์ด์ง, ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์ถ๊ฐ๋๋ฉด ๊ทธ ๋งํผ ์๋ก ์์ฑํด์ผํจ. โก Spring ์ @Valid ํ์ฉ โก๏ธ if ๋ฌธ์ ๋งค๋ฒ ์์ฑํ ํ์๊ฐ ์๊ณ , ํ๋ผ๋ฏธํฐ๊ฐ ์ถ๊ฐ๋์ด๋ Controller ๋จ์์๋ ์๋ก ์์ฑํด์ผ ํ ๋ด์ฉ์ด ์์ ์ด ์ธ์๋ ๋ค์ํ ..