<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>컴퓨터공방</title>
    <link>https://rizni.tistory.com/</link>
    <description>컴퓨터를 공부하고 있습니다.</description>
    <language>ko</language>
    <pubDate>Thu, 2 Jul 2026 01:24:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>양상추상츄</managingEditor>
    <image>
      <title>컴퓨터공방</title>
      <url>https://tistory1.daumcdn.net/tistory/4954521/attach/3503f22885c9445ab07003fc53ee321a</url>
      <link>https://rizni.tistory.com</link>
    </image>
    <item>
      <title>라즈베리파이 VNC 접속시 에러</title>
      <link>https://rizni.tistory.com/283</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;VNC 업데이트 관련하여 업데이트하라는 메시지가 나옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; 설정 초기화 하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;sudo &lt;span&gt;rm&lt;/span&gt; -rf /root/.vnc&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;sudo &lt;span&gt;rm&lt;/span&gt; -rf ~/.vnc&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 명령어 실행 후 재시작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 업데이트 관련 메시지는 없어짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 접속은 안되서 확인해 보니 5900번, VNC 기본포트가 허용이 안되있었다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; sudo ufw allow 5900&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;다음 명령어로 5900번 포트 허용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;SSH 연결이 안되는 경우도 위의 명령어로 허용하면됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;sudo ufw status&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그 다음 확인 허용 상태에 대한 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 라즈베리파이 비밀번호 변경하는 방법(VNC로 라즈베리파이 접속하려면 user, password 입력해야함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user : pi (따로 사용자를 생성하거나 하지 않았으면 기본 사용자는 pi이다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; sudo passwd [사용자 이름]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;위의 명령어 입력 후 비밀번호 설정 진행&lt;/p&gt;</description>
      <category>vnc</category>
      <category>라즈베리파이</category>
      <category>라즈베리파이 비밀번호</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/283</guid>
      <comments>https://rizni.tistory.com/283#entry283comment</comments>
      <pubDate>Sat, 11 Jan 2025 22:06:04 +0900</pubDate>
    </item>
    <item>
      <title>도커 설정</title>
      <link>https://rizni.tistory.com/282</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;wanted에서 진행하는 pre onboarding backend에 참여하여 프로젝트를 git clone하고 진행하던 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 설정을 완료하고(도커 설정 포함) 서버실행을 했는데 계속 실패를 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조는 로컬에서 스프링 서버 실행, mysql DB 서버는 도커에서 실행하여 로컬의 스프링 서버에서 요청을 받으면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커의 DB에서 데이터를 주는 구조였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 메시지가 발생&lt;/p&gt;
&lt;pre id=&quot;code_1731738239652&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

Action:

Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

Process finished with exit code 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Data source 연결 정보가 잘 못 되어 있다고 되어 있는데 아무리 봐도 잘 못 설정한 부분이 없었고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 run configuration에 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 설정 내용&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; docker-compose.yml
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;docker에서 실행할 내용을 담은 문서&amp;nbsp;&lt;/li&gt;
&lt;li&gt;스프링 실행시 이 문서에 적힌 내용대로 docker에 image 생성&lt;/li&gt;
&lt;li&gt;volumes의 경로에 초기화 sql을 통해 초기 DB 데이터 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;docker compose.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1023&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNrvpd/btsKL3YGrSD/VQhvACH4An2ypEvoMMX5r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNrvpd/btsKL3YGrSD/VQhvACH4An2ypEvoMMX5r1/img.png&quot; data-alt=&quot;docker-compose.yml&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNrvpd/btsKL3YGrSD/VQhvACH4An2ypEvoMMX5r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNrvpd%2FbtsKL3YGrSD%2FVQhvACH4An2ypEvoMMX5r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1919&quot; height=&quot;1023&quot; data-filename=&quot;docker compose.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1023&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;docker-compose.yml&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;application.yml
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;스프링 서버에서 실행시 참조할 내용을 적은 문서&lt;/li&gt;
&lt;li&gt;docker에 있는 DB와 연결하려면 datasource 부분 설정 확인 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;application yml.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1026&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTll4T/btsKKOOOt7J/jBALAMpqG5CbPUMIcVtpK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTll4T/btsKKOOOt7J/jBALAMpqG5CbPUMIcVtpK1/img.png&quot; data-alt=&quot;application.yml&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTll4T/btsKKOOOt7J/jBALAMpqG5CbPUMIcVtpK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTll4T%2FbtsKKOOOt7J%2FjBALAMpqG5CbPUMIcVtpK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1919&quot; height=&quot;1026&quot; data-filename=&quot;application yml.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1026&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;application.yml&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;위의 에러 발생으로 인한 확인 필요 항목
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;MySQL 컨테이너 실행 재확인
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;터미널에서 다음 명령어 실행 : docker ps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MySQL 컨테이너 접속 확인
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;로컬에서 MySQL Workbench 또는 CLI를 사용하여 컨테이너에 접속 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;run configuration 확인
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;실행할 profile 설정 확인
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;application yml 에서 DB 설정을한 profile로 run 될 수 있도록 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;-Dspring.profiles.active=dev&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;mysql 연결 성공.PNG&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8qyhq/btsKL0HIB7k/VPOh7m7PNB8AJR7IATT1I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8qyhq/btsKL0HIB7k/VPOh7m7PNB8AJR7IATT1I1/img.png&quot; data-alt=&quot;MySQL 컨테이너 접속 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8qyhq/btsKL0HIB7k/VPOh7m7PNB8AJR7IATT1I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8qyhq%2FbtsKL0HIB7k%2FVPOh7m7PNB8AJR7IATT1I1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;424&quot; height=&quot;296&quot; data-filename=&quot;mysql 연결 성공.PNG&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL 컨테이너 접속 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;run configuration check.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1025&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQIpz/btsKMI0zme7/x1qMNvdKb1ef44QSzp46ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQIpz/btsKMI0zme7/x1qMNvdKb1ef44QSzp46ck/img.png&quot; data-alt=&quot;run configuration 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQIpz/btsKMI0zme7/x1qMNvdKb1ef44QSzp46ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQIpz%2FbtsKMI0zme7%2Fx1qMNvdKb1ef44QSzp46ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;553&quot; height=&quot;295&quot; data-filename=&quot;run configuration check.PNG&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1025&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;run configuration 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Docker</category>
      <category>docker mysql 설정</category>
      <category>run configuration</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/282</guid>
      <comments>https://rizni.tistory.com/282#entry282comment</comments>
      <pubDate>Sat, 16 Nov 2024 16:05:23 +0900</pubDate>
    </item>
    <item>
      <title>공공데이터 포털 serviceKey 인증 error</title>
      <link>https://rizni.tistory.com/280</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;공공데이터 포털에서 API 호출을 하는데 다음과 같은 error가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;error가 발생하다가 API 사용신청한 뒤 1~2시간 정도 뒤에 API 호출에 성공했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 다음날 다시 해봤는데 안됨&lt;/p&gt;
&lt;pre id=&quot;code_1687874777424&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;OpenAPI_ServiceResponse&amp;gt;
	&amp;lt;cmmMsgHeader&amp;gt;
		&amp;lt;errMsg&amp;gt;SERVICE ERROR&amp;lt;/errMsg&amp;gt;
		&amp;lt;returnAuthMsg&amp;gt;SERVICE_KEY_IS_NOT_REGISTERED_ERROR&amp;lt;/returnAuthMsg&amp;gt;
		&amp;lt;returnReasonCode&amp;gt;30&amp;lt;/returnReasonCode&amp;gt;
	&amp;lt;/cmmMsgHeader&amp;gt;
&amp;lt;/OpenAPI_ServiceResponse&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URLEncoder, URLDecoder, serviceKey 재발급도 해봤는데 안되서 Q&amp;amp;A를 확인해 봤는데 같은 상황인 사람들이 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;669&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnQDpM/btslAnaft52/Eum0iQ44T3Qy76c7wEc08k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnQDpM/btslAnaft52/Eum0iQ44T3Qy76c7wEc08k/img.png&quot; data-alt=&quot;SERVICE_KEY_IS_NOT_REGISTERED_ERROR&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnQDpM/btslAnaft52/Eum0iQ44T3Qy76c7wEc08k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnQDpM%2FbtslAnaft52%2FEum0iQ44T3Qy76c7wEc08k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;297&quot; height=&quot;669&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;669&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SERVICE_KEY_IS_NOT_REGISTERED_ERROR&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공공데이터 포털에서 API 사용신청하고 나서 발급된 serviceKey와 API간에 동기화가 필요한데 이 동기화가 어느정도 시간이 필요하고 재발급 할 경우에 다시 그 시간이 필요한 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(성공 했다가 안되는 원인은??)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1687875716578&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;공공데이터 포털&quot; data-og-description=&quot;국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유&amp;bull;활용할 수 있도록 공공데이터(Datase&quot; data-og-host=&quot;www.data.go.kr&quot; data-og-source-url=&quot;https://www.data.go.kr/index.do&quot; data-og-url=&quot;https://www.data.go.kr/index.do&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/D1yT7/hyS8tBgOEJ/FiWFkuddjsKpmHR1gtsTok/img.png?width=390&amp;amp;height=158&amp;amp;face=0_0_390_158&quot;&gt;&lt;a href=&quot;https://www.data.go.kr/index.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.data.go.kr/index.do&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/D1yT7/hyS8tBgOEJ/FiWFkuddjsKpmHR1gtsTok/img.png?width=390&amp;amp;height=158&amp;amp;face=0_0_390_158');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;공공데이터 포털&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유&amp;bull;활용할 수 있도록 공공데이터(Datase&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.data.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>JAVA</category>
      <category>공공데이터 API 호출</category>
      <category>공공데이터 포털</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/280</guid>
      <comments>https://rizni.tistory.com/280#entry280comment</comments>
      <pubDate>Tue, 27 Jun 2023 23:13:07 +0900</pubDate>
    </item>
    <item>
      <title>gradle oracle mybatis 설정</title>
      <link>https://rizni.tistory.com/279</link>
      <description>&lt;figure id=&quot;og_1683032760883&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;스프링부트 처음에 프로젝트 설정하기&quot; data-og-description=&quot;예전에 학원에서 했던 내용을 다시 시간이 지나서 해봄 (현재 보다는 이전의 버전으로 설치진행) 1. gradle 설치 Gradle | Releases Find binaries and reference documentation for current and past versions of Gradle. gradle.or&quot; data-og-host=&quot;rizni.tistory.com&quot; data-og-source-url=&quot;https://rizni.tistory.com/278&quot; data-og-url=&quot;https://rizni.tistory.com/278&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BDRKQ/hyStRhSwfs/qHnBDvqMF1iQPOYkiYy3i0/img.png?width=527&amp;amp;height=500&amp;amp;face=0_0_527_500,https://scrap.kakaocdn.net/dn/bO71oV/hyStSA5uaa/iIy91ghF8KneC30yF4kX9K/img.png?width=527&amp;amp;height=500&amp;amp;face=0_0_527_500,https://scrap.kakaocdn.net/dn/cO182U/hyStTfF5bc/OfpFl79HzyCXOJ4jW5oya1/img.png?width=1299&amp;amp;height=927&amp;amp;face=0_0_1299_927&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://rizni.tistory.com/278&quot; data-source-url=&quot;https://rizni.tistory.com/278&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BDRKQ/hyStRhSwfs/qHnBDvqMF1iQPOYkiYy3i0/img.png?width=527&amp;amp;height=500&amp;amp;face=0_0_527_500,https://scrap.kakaocdn.net/dn/bO71oV/hyStSA5uaa/iIy91ghF8KneC30yF4kX9K/img.png?width=527&amp;amp;height=500&amp;amp;face=0_0_527_500,https://scrap.kakaocdn.net/dn/cO182U/hyStTfF5bc/OfpFl79HzyCXOJ4jW5oya1/img.png?width=1299&amp;amp;height=927&amp;amp;face=0_0_1299_927');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;스프링부트 처음에 프로젝트 설정하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;예전에 학원에서 했던 내용을 다시 시간이 지나서 해봄 (현재 보다는 이전의 버전으로 설치진행) 1. gradle 설치 Gradle | Releases Find binaries and reference documentation for current and past versions of Gradle. gradle.or&lt;/p&gt;
&lt;p class=&quot;og-host&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;rizni.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링부트 설정후에 mybatis를 설정하고 테스트를 하던중 여러가지 오류가 복합적으로 계속 나와서 애를 먹었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file ...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource ...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위와 같이 bean이 등록이 안됐다고 하거나 dataSource 설정이 잘못 되었다거나 하나의 오류를 해결하기 위해 이것 저것 해보다 보니 복합적으로 문제가 발생하는듯 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그중에 체크를 해서 해결이 되었던 부분을 정리함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계속 잘못 설정했던것 중에 하나가 dependencies 설정을 잘못했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 가지고 있는 OJDBC는 OJDBC6 인데 계속 다른 버전을 입력해놓고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ojdbc가 해당 경로에 존재하는지도 확인하자 (경로는 검색해서 확인)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. build.gradle 체크하기&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1683032070790&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
  id 'org.springframework.boot' version '2.6.0'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
  id 'eclipse'
  id &quot;io.freefair.lombok&quot; version &quot;6.4.1&quot;
}

group = 'com.items'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
  mavenCentral()
}

dependencies {	
  // Oracle JDBC 드라이버
  implementation group: 'com.oracle.database.jdbc', name: 'ojdbc6', version: '11.2.0.4'
  implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
  
  // log4j2
  implementation 'org.springframework.boot:spring-boot-starter-log4j2'
  
  implementation 'org.springframework.boot:spring-boot-starter-jdbc'
  implementation 'org.springframework.boot:spring-boot-starter-web'
  developmentOnly 'org.springframework.boot:spring-boot-devtools'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
  testImplementation 'junit:junit:4.13.2'
}

configurations {
    all {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
}

test {
  useJUnitPlatform()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build.gradle을 수정하고 나서는 다시 build 해줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cmd를 통해서 해당 경로(프로젝트에 app 폴더, app 폴더 안에 보면 build.gradle 있음)로 이동한 다음 gradle clean eclipse 하고 gradle eclipse로 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. @SpringBootApplication 애노테이션을 main class에 사용했는지 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SpringBootApplication은 아래의 모든 애노테이션 역할을 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SpringBootConfiguration =&amp;gt; Bean 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@ConponentScan =&amp;gt; @Service, @Repository, @Controller를 스캔하여 Bean으로 등록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@EnableAutoConfiguration =&amp;gt; 사전에 정의한 Bean들을 자동 등록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.... 그 외의 다른 애노테이션도 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Controller, Service, Dao 각각 @Autowired 사용 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@Inject @name을 사용하여 의존 객체 주입가능 @Inject는 프레임워크에 종속적이지 않다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@Autowired는 SpringBoot에 종속적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 경로 설정이 잘되있는지 확인하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zwaUc/btsdGBtDVDu/dJrlklZM7kwg2ntHaxVswk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zwaUc/btsdGBtDVDu/dJrlklZM7kwg2ntHaxVswk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zwaUc/btsdGBtDVDu/dJrlklZM7kwg2ntHaxVswk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzwaUc%2FbtsdGBtDVDu%2FdJrlklZM7kwg2ntHaxVswk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;312&quot; height=&quot;340&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPhhIa/btsdEDMd5vs/XlqKyB1K9M9UeEENQ7Jqok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPhhIa/btsdEDMd5vs/XlqKyB1K9M9UeEENQ7Jqok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPhhIa/btsdEDMd5vs/XlqKyB1K9M9UeEENQ7Jqok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPhhIa%2FbtsdEDMd5vs%2FXlqKyB1K9M9UeEENQ7Jqok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;241&quot; height=&quot;136&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;com &amp;gt; items &amp;gt; dao 경로가 같음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. xml에 있는 쿼리문이 정상작동하는지 확인하기&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>gradle</category>
      <category>gradle oracle</category>
      <category>Gradle 설정</category>
      <category>오라클 mybatis</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/279</guid>
      <comments>https://rizni.tistory.com/279#entry279comment</comments>
      <pubDate>Tue, 2 May 2023 22:34:49 +0900</pubDate>
    </item>
    <item>
      <title>스프링부트 처음에 프로젝트 설정하기</title>
      <link>https://rizni.tistory.com/278</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 학원에서 했던 내용을 다시 시간이 지나서 해봄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(현재 보다는 이전의 버전으로 설치진행)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. gradle 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1682430438830&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Gradle | Releases&quot; data-og-description=&quot;Find binaries and reference documentation for current and past versions of Gradle.&quot; data-og-host=&quot;gradle.org&quot; data-og-source-url=&quot;https://gradle.org/releases/&quot; data-og-url=&quot;https://gradle.org/releases/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dyEjmb/hySovmFxP2/mBXVM579cGRnqDMeRWGQm1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/dPJwr9/hySpyaZpYB/EfSfk5LJ7Pcd6u6EfGgcbK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://gradle.org/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gradle.org/releases/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dyEjmb/hySovmFxP2/mBXVM579cGRnqDMeRWGQm1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/dPJwr9/hySpyaZpYB/EfSfk5LJ7Pcd6u6EfGgcbK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gradle | Releases&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Find binaries and reference documentation for current and past versions of Gradle.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gradle.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 환경변수 편집&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcf5Oo/btscJnaUwVG/tt3G9tWEtqdB0FWz0khFGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcf5Oo/btscJnaUwVG/tt3G9tWEtqdB0FWz0khFGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcf5Oo/btscJnaUwVG/tt3G9tWEtqdB0FWz0khFGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcf5Oo%2FbtscJnaUwVG%2Ftt3G9tWEtqdB0FWz0khFGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;500&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. cmd에서 gradle을 눌러서 확인하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y1yzD/btscIJFiaXT/PNplMDcy31WOA2DgmSbh4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y1yzD/btscIJFiaXT/PNplMDcy31WOA2DgmSbh4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y1yzD/btscIJFiaXT/PNplMDcy31WOA2DgmSbh4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy1yzD%2FbtscIJFiaXT%2FPNplMDcy31WOA2DgmSbh4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;661&quot; height=&quot;429&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. gradle init&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인이 사용할 프로젝트 폴더에 cmd를 통해서 gradle init을 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Select type of project to generate:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: basic&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: application&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3: library&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4: Gradle plugin Enter selection (default: basic) [1..4]&lt;span style=&quot;background-color: #fbecdd;&quot; data-token-index=&quot;1&quot;&gt; 2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Select implementation language:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: C++&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: Groovy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3: Java&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4: Kotlin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5: Scala&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6: Swift Enter selection (default: Java) [1..6]&lt;span style=&quot;background-color: #fbecdd;&quot; data-token-index=&quot;1&quot;&gt; 3&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Split functionality across multiple subprojects?:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: no - only one application project&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: yes - application and library projects&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enter selection (default: no - only one application project) [1..2]&lt;span style=&quot;background-color: #fbecdd;&quot; data-token-index=&quot;1&quot;&gt; 1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Select build script DSL:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: Groovy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: Kotlin Enter selection (default: Groovy) [1..2]&lt;span style=&quot;background-color: #fbecdd;&quot; data-token-index=&quot;1&quot;&gt; 1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generate build using new APIs and behavior&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(some features may change in the next minor release)? (default: no) [yes, no] &lt;span style=&quot;color: #ef6f53;&quot;&gt;Enter&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Select test framework:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: JUnit 4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2: TestNG&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3: Spock&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4: JUnit Jupiter Enter selection (default: JUnit Jupiter) [1..4]&lt;span style=&quot;background-color: #fbecdd;&quot; data-token-index=&quot;1&quot;&gt; 1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Project name (default: git): demo&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Source package (default: git): co.com&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. gradle eclipse&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일에 gradle init으로 폴더들이 생겨있는데 거기서 app폴더를 찾아서 들어간다(cmd로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app에서 gradle eclipse 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 bulid 실패시에 =&amp;gt; build.gradle 파일을 열고 아래 항목에서 필요한 부분 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*자세한 내용 확인은 아래링크에서 할 수 있음 (spring initializr)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682432132705&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
    id 'org.springframework.boot' version '2.6.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'eclipse'
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13.2'
    implementation 'com.google.guava:guava:30.1.1-jre'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

group = 'com.items'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
  mavenCentral()
}

tasks.named('test') {
  useJUnitPlatform()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*app 폴더이름 변경하고 싶으면 build.gradle에 다음 항목 추가 후 gradle eclipse 다시 진행&lt;/p&gt;
&lt;pre id=&quot;code_1682432353214&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// eclipse 프로젝트 이름을 설정하기
eclipse {
	project {
		name = &quot;java-lang&quot;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. eclipse 프로젝트 import&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import projects =&amp;gt; gradle init 했던 프로젝트 선택 (하단에 체크박스 체크)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. gradle init만 되어있는 경우에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크들어가서 dependency 확인하고 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. App.java 실행해서 스프링부트 실행 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;port 설정이 8080으로 확인하면 되지만 혹시 안된다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application.properties에서 port 설정을 한다. ( server.port = 8000 )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;927&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WBVry/btscKGHY1qU/m4OYVQroPmxEEeTtZPIGxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WBVry/btscKGHY1qU/m4OYVQroPmxEEeTtZPIGxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WBVry/btscKGHY1qU/m4OYVQroPmxEEeTtZPIGxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWBVry%2FbtscKGHY1qU%2Fm4OYVQroPmxEEeTtZPIGxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1299&quot; height=&quot;927&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;927&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9. 호출해보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;localhost:8000/hello&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGIDbp/btscCBva08p/kE1roC4rWu2e8kBKSe8QcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGIDbp/btscCBva08p/kE1roC4rWu2e8kBKSe8QcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGIDbp/btscCBva08p/kE1roC4rWu2e8kBKSe8QcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGIDbp%2FbtscCBva08p%2FkE1roC4rWu2e8kBKSe8QcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;398&quot; height=&quot;196&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>gradle</category>
      <category>Hello World</category>
      <category>spring</category>
      <category>SpringBoot</category>
      <category>스프링부트</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/278</guid>
      <comments>https://rizni.tistory.com/278#entry278comment</comments>
      <pubDate>Tue, 25 Apr 2023 23:56:20 +0900</pubDate>
    </item>
    <item>
      <title>정규화_1</title>
      <link>https://rizni.tistory.com/277</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이상현상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스에서 삽입, 업데이트, 삭제를 제대로 할 수 없게 되는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삽입이상 - 새로운 데이터를 자연스럽게 저장 할 수 없는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제이상 - 데이터를 업데이트했을 때 정확성을 지키기 어려워지는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갱신이상 - 원하는 데이터만 자연스럽게 삭제할 수 없는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스의 테이블이 잘 만들어졌는지 평가하고, 잘 만들지 못한 테이블을 고쳐나가는 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블을 정규형이라고 불리는 형태에 부합하게 만들어나감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상현상을 방지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1NF (제1정규형)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 안 모든 로우의 모든 컬럼값들은 나눌 수 없는 단일 값이어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 컬럼을 분리하여 테이블로 만드는 방법도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp7XnR/btr7ghhhSi3/VGUWHsuEopK7tjPZyXypq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp7XnR/btr7ghhhSi3/VGUWHsuEopK7tjPZyXypq1/img.png&quot; data-alt=&quot;http://www.gitta.info/LogicModelin/en/html/DataConsiten_Norm1NF.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp7XnR/btr7ghhhSi3/VGUWHsuEopK7tjPZyXypq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp7XnR%2Fbtr7ghhhSi3%2FVGUWHsuEopK7tjPZyXypq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;210&quot; height=&quot;240&quot; data-origin-width=&quot;210&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;http://www.gitta.info/LogicModelin/en/html/DataConsiten_Norm1NF.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 종속성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x의 값에 따라서 y의 값이 결정될 때, y는 x에 함수 종속성이 있다고 한다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E3Cnr/btr7n2i0V4B/ebecFf9WHzLXouhGLPIzj1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E3Cnr/btr7n2i0V4B/ebecFf9WHzLXouhGLPIzj1/img.jpg&quot; data-alt=&quot;https://dbmsbyrk.wordpress.com/2019/06/11/lecture-17/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E3Cnr/btr7n2i0V4B/ebecFf9WHzLXouhGLPIzj1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE3Cnr%2Fbtr7n2i0V4B%2FebecFf9WHzLXouhGLPIzj1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;470&quot; height=&quot;452&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://dbmsbyrk.wordpress.com/2019/06/11/lecture-17/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Candidate Key&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 로우를 특정 지을 수 있는 attribute들의 최소 집합&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8Aaxv/btr7fZBod8C/MfBHuf4s3DOVB9tkFmlKu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8Aaxv/btr7fZBod8C/MfBHuf4s3DOVB9tkFmlKu1/img.png&quot; data-alt=&quot;https://unstop.com/blog/difference-between-primary-key-and-candidate-key&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8Aaxv/btr7fZBod8C/MfBHuf4s3DOVB9tkFmlKu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8Aaxv%2Fbtr7fZBod8C%2FMfBHuf4s3DOVB9tkFmlKu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;400&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://unstop.com/blog/difference-between-primary-key-and-candidate-key&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230402_185428634.jpg&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7HOo5/btr7hSBHk4j/2dQWxHn5yJk6YYKmBzZYe1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7HOo5/btr7hSBHk4j/2dQWxHn5yJk6YYKmBzZYe1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7HOo5/btr7hSBHk4j/2dQWxHn5yJk6YYKmBzZYe1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7HOo5%2Fbtr7hSBHk4j%2F2dQWxHn5yJk6YYKmBzZYe1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;269&quot; height=&quot;402&quot; data-filename=&quot;KakaoTalk_20230402_185428634.jpg&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>코드잇/데이터베이스</category>
      <category>오늘도코드잇</category>
      <category>코드잇</category>
      <category>코드잇TIL</category>
      <category>코딩공부</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/277</guid>
      <comments>https://rizni.tistory.com/277#entry277comment</comments>
      <pubDate>Sun, 2 Apr 2023 12:03:28 +0900</pubDate>
    </item>
    <item>
      <title>관계 모델링</title>
      <link>https://rizni.tistory.com/276</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;M:N&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;student 테이블 이든지 course 테이블 이든지 각각 테이블에 Foreign key를 넣으면 두테이블 모두 컬럼이 많아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(course1, course2 ..이런식으로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 연결테이블 이란걸 만들어서 두테이블의 Foreign key를 담는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결테이블의 Foreign key를 통해서 값을 확인함&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JCA1v/btr5Zj0BjqV/BKWHgNZ0gCYeKNLYaMKGS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JCA1v/btr5Zj0BjqV/BKWHgNZ0gCYeKNLYaMKGS0/img.png&quot; data-alt=&quot;https://www.datensen.com/blog/er-diagram/many-to-many-relationships/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JCA1v/btr5Zj0BjqV/BKWHgNZ0gCYeKNLYaMKGS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJCA1v%2Fbtr5Zj0BjqV%2FBKWHgNZ0gCYeKNLYaMKGS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;261&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.datensen.com/blog/er-diagram/many-to-many-relationships/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1:N&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일대다 관계에서는 다에 해당하는 테이블에 일에 해당하는 테이블의 Foreign key를 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user 테이블과 review 테이블이 1:N 관계 일 때 (까마귀 발이 review 쪽으로) review의 Foreign key를 user 테이블에 생성할 경우 user 1명이 review를 여러개 남겼을때 컬럼이 review1 review2 이런식으로 계속 늘어나야 하기 때문에 이렇게 하는것보다는 review 테이블에 user의 Foreign key를 생성해서(user_id) 어떤 리뷰를 누가 남겼는지 확인하는 쪽이 더 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1:1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일대일 관계에서는 NULL이 발생하지 않는 방향으로 Foreign key 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user 테이블과 card 테이블이 1:1 관계일 경우 user는 꼭 card가 없어도 된다고 할 때 user 테이블에 card의 Foreign key를 넣으면 null이 발생함으로 card 테이블에 user의 Foreign key (user_id)를 생성하는게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20230326_124739300.jpg&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bium7L/btr5TqTis6l/HKOWrQ4BVKMlDSkCvmZWv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bium7L/btr5TqTis6l/HKOWrQ4BVKMlDSkCvmZWv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bium7L/btr5TqTis6l/HKOWrQ4BVKMlDSkCvmZWv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbium7L%2Fbtr5TqTis6l%2FHKOWrQ4BVKMlDSkCvmZWv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;302&quot; height=&quot;533&quot; data-filename=&quot;edited_KakaoTalk_20230326_124739300.jpg&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>코드잇/데이터베이스</category>
      <category>오늘도코드잇</category>
      <category>코드잇</category>
      <category>코드잇TIL</category>
      <category>코딩공부</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/276</guid>
      <comments>https://rizni.tistory.com/276#entry276comment</comments>
      <pubDate>Sun, 26 Mar 2023 12:49:10 +0900</pubDate>
    </item>
    <item>
      <title>ERM(ERD) 표현</title>
      <link>https://rizni.tistory.com/275</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;*여러 값을 갖는 Attribute0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 유저는 여러 개의 주소를 가질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- null이 많이 생길 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 컬럼을 몇개를 만들어야 하는지 애매&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 조회가 복잡하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴경우 attribute를 entity로 변경하여 테이블로 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user 테이블과 address를 foregin key로 연결하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user의 address를 확인 할 수 있음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 값으로 표현할 수 있는 명사는 attribute 후보다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다, 여러 값을 가질 수 있다면 entity 후보다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카디널리티&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Entity type A와 B 사이에 A Entity 한개가 B Entity 몇개와 연결될 수 있고, B Entity 한개가 A Entity 몇개와 연결될 수 있는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 1:1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두종류의 entity사이가 1:1 관계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 법적 부부관계, 주민등록증&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 1:N&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 유저와 리뷰, 학교 선생님과 수업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- N:N&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 유저와 상품에서 찜하기 기능, 학생과 수업의 관계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ERM(ERD) 표현&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;erd-1.jpg&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xjU2A/btr4v9zxfIE/I1r1OcVzbRrruOdj0kkCnk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xjU2A/btr4v9zxfIE/I1r1OcVzbRrruOdj0kkCnk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xjU2A/btr4v9zxfIE/I1r1OcVzbRrruOdj0kkCnk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxjU2A%2Fbtr4v9zxfIE%2FI1r1OcVzbRrruOdj0kkCnk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;350&quot; data-filename=&quot;erd-1.jpg&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1708&quot; data-origin-height=&quot;1380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1EYLF/btr4LImBXY5/W5y45QCV008n3jicyAavc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1EYLF/btr4LImBXY5/W5y45QCV008n3jicyAavc0/img.png&quot; data-alt=&quot;https://vertabelo.com/blog/vertabelo-feature-organize-erd-diagram/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1EYLF/btr4LImBXY5/W5y45QCV008n3jicyAavc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1EYLF%2Fbtr4LImBXY5%2FW5y45QCV008n3jicyAavc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1708&quot; height=&quot;1380&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1708&quot; data-origin-height=&quot;1380&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://vertabelo.com/blog/vertabelo-feature-organize-erd-diagram/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230319_113323693.png&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by8RQX/btr4yjH7CKC/hwuw08YfwF28kUocheL1d0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by8RQX/btr4yjH7CKC/hwuw08YfwF28kUocheL1d0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by8RQX/btr4yjH7CKC/hwuw08YfwF28kUocheL1d0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby8RQX%2Fbtr4yjH7CKC%2Fhwuw08YfwF28kUocheL1d0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;337&quot; height=&quot;1451&quot; data-filename=&quot;KakaoTalk_20230319_113323693.png&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>코드잇/데이터베이스</category>
      <category>오늘도코드잇</category>
      <category>코드잇</category>
      <category>코드잇TIL</category>
      <category>코딩공부</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/275</guid>
      <comments>https://rizni.tistory.com/275#entry275comment</comments>
      <pubDate>Sun, 19 Mar 2023 11:34:32 +0900</pubDate>
    </item>
    <item>
      <title>비즈니스 룰</title>
      <link>https://rizni.tistory.com/274</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;모델링의 시작은 저장하고 싶은 데이터의 entity, attribute, relationship을 파악하는것에서 부터 시작된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스룰 : 특정 조직이 운영되기 위해 따라야하는 정책, 절차, 원칙들에 대한 간단명료한 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유저는 상품을 주문할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 유저(user)와 상품(product)은 명사, entity로 표현된다. 주문(order)은 동사 relationship으로 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 주문내역은 한 번의 배달로, 3일 안에 유저가 지정한 배송지에 전달돼야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 그렇지 못할 시, 유저에게 최대한 발리 알려줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 주문내역(order), 배송지(destination), order라는 entity가 생기고 order는 user와 product 사이의 relationship이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유저는 상품에 대한 평가를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가는 두종류의 데이터 : 1-5 사이 자연수의 별점, 그리고 200자 이내 줄 글을 통해 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; entity : 평가(review), attribute : 별점(score), 줄 글(comment), review는 user와 product 사이의 relationship이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;entity와 attribute가 햇갈릴 때가 있는데 상황에 따라 둘이서 변경될 수 있다고 함&lt;/p&gt;</description>
      <category>코드잇/데이터베이스</category>
      <category>오늘도코드잇</category>
      <category>코드잇</category>
      <category>코드잇TIL</category>
      <category>코딩공부</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/274</guid>
      <comments>https://rizni.tistory.com/274#entry274comment</comments>
      <pubDate>Sat, 18 Mar 2023 11:50:30 +0900</pubDate>
    </item>
    <item>
      <title>데이터 모델링_2</title>
      <link>https://rizni.tistory.com/273</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;*Entity(개체) : 우리가 데이터를 저장하려고 하는 대상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*Attribute(속성) : Entity에 대해서 저장하려고하는 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*Relationship(관계) : Entity 사이의 연결점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*Constraint(제약조건) : 여러 데이터 요소들에 있는 규칙&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*ERM(Entity-Relationship Model)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Entity 사이 관계의 속성을 한눈에 파악하기 쉬움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Entity 하나하나에 대한 정보를 표현하지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ERM에 있는 내요을 릴레이셔널 모델로 바꿔서 표현하기 쉬움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Entity는 네모로 attribute는 네모안 글씨로, relationship은 실선으로 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*개념모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 대략적인 구조를 파악할때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - Entity 사이의 관계표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 경영진이 새로운 기능을 추가하려고 할때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*논리모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - Attribute들과 primary key, foregin key 까지 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*물리모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 데이터 타입, 변수 이름들이 실제로 어떻게 저장되는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 실제로 데이터베이스를 구축할 수 있을정도의 자세한 정보가 담김&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념모델 -&amp;gt; 논리모델 -&amp;gt; 물리모델 순으로 구체화 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230319_091453083.jpg&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cvd8f/btr4v81G8Vz/tGa4wTukgKzChI74hVAjl0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cvd8f/btr4v81G8Vz/tGa4wTukgKzChI74hVAjl0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cvd8f/btr4v81G8Vz/tGa4wTukgKzChI74hVAjl0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCvd8f%2Fbtr4v81G8Vz%2FtGa4wTukgKzChI74hVAjl0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;294&quot; height=&quot;1451&quot; data-filename=&quot;KakaoTalk_20230319_091453083.jpg&quot; data-origin-width=&quot;971&quot; data-origin-height=&quot;1451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>코드잇/데이터베이스</category>
      <category>오늘도 코드잇</category>
      <category>코드잇</category>
      <category>코드잇TIL</category>
      <category>코딩공부</category>
      <author>양상추상츄</author>
      <guid isPermaLink="true">https://rizni.tistory.com/273</guid>
      <comments>https://rizni.tistory.com/273#entry273comment</comments>
      <pubDate>Sat, 18 Mar 2023 11:36:19 +0900</pubDate>
    </item>
  </channel>
</rss>