<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>Database Archives - 아빠프로그래머의 좌충우돌 개발하기!</title>
	<atom:link href="https://www.daddyprogrammer.org/post/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.daddyprogrammer.org/post/tag/database/</link>
	<description>기저귀 갈면서 코딩해야 프로다!</description>
	<lastBuildDate>Thu, 17 Feb 2022 09:54:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.daddyprogrammer.org/wp-content/uploads/2019/04/cropped-spring-bird-2295431_960_720-300x300.jpg</url>
	<title>Database Archives - 아빠프로그래머의 좌충우돌 개발하기!</title>
	<link>https://www.daddyprogrammer.org/post/tag/database/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SpringBoot2로 Rest api 만들기(3) – H2 Database 연동</title>
		<link>https://www.daddyprogrammer.org/post/152/spring-boot2-h2-database-intergrate/</link>
					<comments>https://www.daddyprogrammer.org/post/152/spring-boot2-h2-database-intergrate/#comments</comments>
		
		<dc:creator><![CDATA[happydaddy]]></dc:creator>
		<pubDate>Tue, 09 Apr 2019 04:31:26 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[SpringBoot]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[H2]]></category>
		<category><![CDATA[Gradle]]></category>
		<guid isPermaLink="false">http://3.36.120.4/?p=152</guid>

					<description><![CDATA[<p>이번 시간에는 SpringBoot에 Database를 연동하는 방법을 실습합니다. 실습은 H2 database로 진행하겠습니다. H2 Database H2는 최소한의 리소스로 실행 가능한 경량 DB로서 테스트 용으로 사용하기 알맞은 DB입니다. 서버 요구사항도 낮고, Mysql처럼 번잡하게 깔아야 할 필요 없이 하나의 jar파일을 실행하기만 하면 DB를 사용할 수 있습니다. &#62;&#62; 최신버전 다운로드 링크 &#62;&#62; 설치 메뉴얼 Database Engine 요구사항 Windows XP or [&#8230;]</p>
<p>The post <a href="https://www.daddyprogrammer.org/post/152/spring-boot2-h2-database-intergrate/">SpringBoot2로 Rest api 만들기(3) – H2 Database 연동</a> appeared first on <a href="https://www.daddyprogrammer.org">아빠프로그래머의 좌충우돌 개발하기!</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">이번 시간에는 SpringBoot에 Database를 연동하는 방법을 실습합니다. 실습은 H2 database로 진행하겠습니다.</p>



<h3 class="wp-block-heading">H2 Database</h3>



<p class="wp-block-paragraph">H2는 최소한의 리소스로 실행 가능한 경량 DB로서 테스트 용으로 사용하기 알맞은 DB입니다. 서버 요구사항도 낮고, Mysql처럼 번잡하게 깔아야 할 필요 없이 하나의 jar파일을 실행하기만 하면 DB를 사용할 수 있습니다.</p>



<h4 class="wp-block-heading">&gt;&gt; <a href="https://www.h2database.com/html/download.html" target="_blank" rel="noreferrer noopener" aria-label=" (새탭으로 열기)">최신버전 다운로드 링크</a></h4>



<h4 class="wp-block-heading">&gt;&gt; <a href="https://www.h2database.com/html/installation.html" target="_blank" rel="noreferrer noopener" aria-label="설치 메뉴얼  (새탭으로 열기)">설치 메뉴얼 </a></h4>



<h4 class="wp-block-heading">Database Engine 요구사항 </h4>



<p class="wp-block-paragraph">Windows XP or Vista, Mac OS X, or Linux Oracle Java 7 or newer Recommended Windows file system: NTFS (FAT32 only supports files up to 4 GB) <br>대부분의 플랫폼에서 실행가능하고 Java7이상만 깔려있으면 됩니다.</p>



<h4 class="wp-block-heading">다운로드 및 실행</h4>



<p class="wp-block-paragraph">위의 링크에서 최신 버전 <a href="http://www.h2database.com/h2-2018-03-18.zip">Platform-Independent Zip</a>을 다운로드하여 적당한 곳에 압축을 해제한 다음 아래와 같이 실행하면 H2 Database가 실행됩니다. <br>윈도우 : /bin/h2.bat<br>맥/리눅스 : /bin/h2.sh</p>



<p class="wp-block-paragraph">직접실행 </p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$ java -jar h2*.jar</pre>



<p class="wp-block-paragraph">또는</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$ java -cp h2*.jar org.h2.tools.Server</pre>



<p class="wp-block-paragraph">저장한 설정, 설정 이름은 Generic H2(Server)를 선택합니다.</p>



<figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" src="http://www.daddyprogrammer.org/wp-content/uploads/2019/04/h2prop.jpg" alt="" class="wp-image-386" width="437" height="299" srcset="https://www.daddyprogrammer.org/wp-content/uploads/2019/04/h2prop.jpg 437w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/h2prop-150x103.jpg 150w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/h2prop-218x150.jpg 218w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/h2prop-300x205.jpg 300w" sizes="(max-width: 437px) 100vw, 437px" /></figure>



<h3 class="wp-block-heading">build.gradle에 라이브러리 추가</h3>



<p class="wp-block-paragraph">이제 스프링에서 H2로 접속하기 위한 설정을 합니다. build.gradle 파일에 H2 라이브러리 설정이 없으면 dependencies에 다음 내용을 추가하여 H2 라이브러리를 다운로드합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">dependencies {     runtimeOnly 'com.h2database:h2’     생략…... } </pre>



<h3 class="wp-block-heading">application.yml에 접속정보 추가</h3>



<p class="wp-block-paragraph">application.yml에 H2 접속 정보를 설정합니다. yml 파일은 들여 쓰기에 민감하므로 들여 쓰기를 잘 맞춰서 설정 내용을 적어야 합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test
    driver-class-name: org.h2.Driver
    username: sa
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    properties.hibernate.hbm2ddl.auto: update
    showSql: true</pre>



<p class="wp-block-paragraph">세팅값은 순서대로 DB 접속 주소, DB 접속을 위해 사용할 디바이스 드라이버, DB 접속 user명 그리고 jpa에서 사용할 db로 h2를 세팅한다입니다.<br><strong><span class="has-inline-color has-luminous-vivid-orange-color">properties.hibernate.hbm2ddl.auto: update</span></strong><br>시작하면서 도메인 객체 구성과 DB의 스키마를 비교해 필요한 테이블이나 칼럼이 없을 때 도메인 객체에 맞춰 DB 스키마를 변경합니다.<br><strong><span class="has-inline-color has-luminous-vivid-orange-color">showSql: true</span></strong><br>jpa가 실행하는 쿼리를 console 로그로 출력하기 위한 설정입니다.</p>



<h4 class="wp-block-heading"> H2에 저장된 table의 데이타를 다루는 코드 작성 </h4>



<p class="wp-block-paragraph">첫 번째로 Table 데이터 맵핑을 위한 Model을 하나 만듭니다. com.rest.api 하위에 entity라는 이름의 package를 생성하고 User Class를 하나 생성합니다. <br>entity는 db table 간의 구조와 관계를 JPA가 요구하는 형태로 만든 model입니다. <br>테이블에 있는 칼럼 값들의 정보, 테이블 간의 연관 관계(1:N, N:1 등) 정보를 담고 있습니다. <br>Lombok 어노테이션을 사용하면 소스가 간단해 지므로 웬만하면 Lombok 사용을 추천합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Builder // builder를 사용할수 있게 합니다.
@Entity // jpa entity임을 알립니다.
@Getter // user 필드값의 getter를 자동으로 생성합니다.
@NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다.
@AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다.
@Table(name = "user") // 'user' 테이블과 매핑됨을 명시
public class User {
    @Id // primaryKey임을 알립니다.
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    //  pk생성전략을 DB에 위임한다는 의미입니다. mysql로 보면 pk 필드를 auto_increment로 설정해 놓은 경우로 보면 됩니다.
    private long msrl;
    @Column(nullable = false, unique = true, length = 30) // uid column을 명시합니다. 필수이고 유니크한 필드이며 길이는 30입니다.
    private String uid;
    @Column(nullable = false, length = 100) // name column을 명시합니다. 필수이고 길이는 100입니다.
    private String name;
}</pre>



<p class="wp-block-paragraph">JPA의 기본키 전략에 대해서는 아래 링크에 자세히 설명되어 있습니다. <br><a href="https://feco.tistory.com/96">https://feco.tistory.com/96</a><br>만약 위에서 lombok을 사용하지 않는다면 아래와 같이 작성해야 합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Entity
@Table(name = "user")
public class User {
    @Id // primaryKey임을 알립니다.
    @GeneratedValue(strategy = GenerationType.IDENTITY) //  pk생성전략을 DB에 위임한다는 의미입니다. mysql로 보면 pk 필드를 auto_increment로 설정해 놓은 경우로 보면 됩니다.
    private long msrl;
    @Column(nullable = false, unique = true, length = 30) // uid column을 명시합니다. 필수이고 유니크한 필드이며 길이는 30입니다.
    private String uid;
    @Column(nullable = false, length = 100) // name column을 명시합니다. 필수이고 길이는 100입니다.
    private String name;

    public User() {}

    public User(String uid, String name) {
        this.uid = uid;
        this.name = name;
    }

    public long getMsrl() {
        return msrl;
    }

    public void setMsrl(long msrl) {
        this.msrl = msrl;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}</pre>



<h3 class="wp-block-heading">Table에 질의를 요청하기 위한 Repository 생성 </h3>



<p class="wp-block-paragraph">생성한 entity를 이용해서 Table에 질의를 요청하기 위한 Repository를 생성합니다. com.rest.api 하위에 repo package를 생성하고, 하위에 아래와 같이 interface를 하나 생성합니다. </p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public interface UserJpaRepo extends JpaRepository&lt;User, Long> {}</pre>



<h3 class="wp-block-heading">Controller에 Repository 설정</h3>



<p class="wp-block-paragraph">Jpa Repo를 사용하는 Controller를 하나 생성합니다. com.rest.api.controller 하위에 다음과 같이 v1 package를 만들고 UserController를 생성합니다. </p>



<figure class="wp-block-image is-resized"><img decoding="async" src="http://www.daddyprogrammer.org/wp-content/uploads/2019/04/structure_1.png" alt="" class="wp-image-392" width="465" height="459" srcset="https://www.daddyprogrammer.org/wp-content/uploads/2019/04/structure_1.png 620w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/structure_1-150x148.png 150w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/structure_1-300x296.png 300w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/structure_1-425x420.png 425w" sizes="(max-width: 465px) 100vw, 465px" /></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@RequiredArgsConstructor
@RestController // 결과값을 JSON으로 출력합니다.
@RequestMapping(value = "/v1")
public class UserController {
    private final UserJpaRepo userJpaRepo;

    @GetMapping(value = "/user")
    public List&lt;User> findAllUser() {
        return userJpaRepo.findAll();
    }

    @PostMapping(value = "/user")
    public User save() {
        User user = User.builder()
                .uid("yumi@naver.com")
                .name("유미")
                .build();
        return userJpaRepo.save(user);
    }
}</pre>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-cyan-blue-color">@RequiredArgsConstructor</span></strong><br>class상단에 선언하면 class내부에 final로 선언된 객체에 대해서 Constructor Injection을 수행합니다. 해당 어노테이션을 사용하지 않고 선언된 객체에 @Autowired를 사용해도 됩니다.</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-cyan-blue-color">@RestController</span></strong><br>결과 데이터를 JSON으로 내보냅니다.</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-cyan-blue-color">@RequestMapping(value = &#8220;/v1&#8221;)</span></strong><br>api resource를 버전별로 관리하기 위해 /v1 을 모든 리소스 주소에 적용되도록 처리합니다.</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-cyan-blue-color">@GetMapping(value = &#8220;/user&#8221;)</span></strong><br>user테이블에 있는 데이터를 모두 읽어옵니다.<br>데이터가 한개 이상일 수 있으므로  리턴 타입은 List&lt;User&gt;로 선언합니다.<br><br><strong><span class="has-inline-color has-vivid-cyan-blue-color">userJpaRepo.findAll()</span></strong><br>JPA를 사용하면 기본으로 CRUD에 대해서는 별다른 설정없이 쿼리를 질의할 수 있도록 메소드를 지원합니다. findAll()은 select msrl, name, uid from user; 쿼리를 내부적으로 실행시켜 줍니다.<br><br><strong><span class="has-inline-color has-vivid-cyan-blue-color">@PostMapping(value = &#8220;/user&#8221;)</span></strong><br>user테이블에 데이터를 1건 입력합니다. userJpaRepo.save(user); 역시 JPA에서 기본으로 제공하는 메소드입니다. user객체를 전달하면 다음과 같이 내부적으로 insert문을 실행시켜 줍니다.<br><span class="has-inline-color has-luminous-vivid-orange-color">insert into user (msrl, name, uid) values (null, ?, ?)</span></p>



<p class="wp-block-paragraph">웹브라우저를 열고 http://localhost:8080/v1/user를 실행합니다. 최초에는 데이터가 없으므로 []만 리턴됩니다.</p>



<p class="wp-block-paragraph">데이터 입력을 위해 POST로 http://localhost:8080/v1/user를 실행합니다.<br>웹브라우저 입력으로는 GET URL만 호출할 수 있으므로 테스트를 위해 아래 링크의 POSTMAN을 다운받아 설치합니다.<br><a rel="noreferrer noopener" aria-label="https://www.getpostman.com/downloads/ (새탭으로 열기)" href="https://www.getpostman.com/downloads/" target="_blank">https://www.getpostman.com/downloads/</a></p>



<figure class="wp-block-image is-resized"><img decoding="async" src="http://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST.png" alt="" class="wp-image-670" width="746" height="503" srcset="https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST.png 995w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST-768x517.png 768w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST-150x101.png 150w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST-300x202.png 300w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST-696x469.png 696w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/POST-624x420.png 624w" sizes="(max-width: 746px) 100vw, 746px" /><figcaption>Post로 실행시 데이터가 1건 입력되는것을 확인할 수 있습니다.</figcaption></figure>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="http://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET.png" alt="" class="wp-image-671" width="746" height="503" srcset="https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET.png 995w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET-768x517.png 768w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET-150x101.png 150w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET-300x202.png 300w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET-696x469.png 696w, https://www.daddyprogrammer.org/wp-content/uploads/2019/04/GET-624x420.png 624w" sizes="auto, (max-width: 746px) 100vw, 746px" /><figcaption>다시 GET을 요청하면 이번에는 데이터가 1건 있으므로 해당 데이터가 출력됩니다.</figcaption></figure>



<h3 class="wp-block-heading">DB Table 자동생성</h3>



<p class="wp-block-paragraph">이번 실습에서는 Table을 생성하지 않았는데도 불구하고 Post로 User 생성 시 오류가 발생하지 않고 정상적으로 입력되었습니다. 설정을 따로 해주지 않으면 entity의 정보를 토대로 서버 실행 시 테이블이 자동 생성되기 때문입니다. 개발 시에는 편리한 점이 있지만 서비스에 사용할 경우엔 테이블의 자동생성은 위험할 수 있으므로 아래와 같이 설정하여 자동 생성되지 않도록 해야 합니다.<br><strong><span class="has-inline-color has-luminous-vivid-orange-color">properties.hibernate.hbm2ddl.auto: none</span></strong></p>



<h4 class="wp-block-heading">hbm2ddl.auto</h4>



<ul class="wp-block-list"><li><span class="has-inline-color has-vivid-cyan-blue-color">create</span> &#8211; 서버 시작할 때 모든 테이블을 생성합니다.</li><li><span class="has-inline-color has-vivid-cyan-blue-color">create-drop</span> &#8211; 서버 시작할 때 테이블을 생성하고 종료할 때 생성된 테이블을 삭제합니다.</li><li><span class="has-inline-color has-vivid-cyan-blue-color">update</span> &#8211; 서버 시작 시 Entity와 Table을 비교하여 변경된 내용을 반영합니다. Table이 없으면 새롭게 생성합니다.</li><li><span class="has-inline-color has-vivid-cyan-blue-color">validate</span> &#8211; 서버 시작 시 Entity와 실제 Table을 비교하여 다르면 시작하지 않고 종료합니다.</li><li><span class="has-inline-color has-vivid-cyan-blue-color">none</span> &#8211; 아무런 처리를 하지 않습니다.</li></ul>



<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="atomic" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test
    driver-class-name: org.h2.Driver
    username: sa
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    showSql:true
    properties.hibernate.hbm2ddl.auto: none</pre>



<p class="wp-block-paragraph">최신 실습 소스는 GitHub 사이트를 참고해 주세요.<br><a href="https://github.com/codej99/SpringRestApi/tree/feature/h2">https://github.com/codej99/SpringRestApi/tree/feature/h2</a></p>



<p class="wp-block-paragraph">GitHub Repository를 import하여 Intellij 프로젝트를 구성하는 방법은 다음 포스팅을 참고해주세요.</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-아빠프로그래머의-좌충우돌-개발하기"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="Hm5FfGZAwP"><a href="https://www.daddyprogrammer.org/post/1215/intellij-github-spring-gradle-project-import/">Intellij에서 Github의 Spring Gradle Project import 하기</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Intellij에서 Github의 Spring Gradle Project import 하기&#8221; &#8212; 아빠프로그래머의 좌충우돌 개발하기!" src="https://www.daddyprogrammer.org/post/1215/intellij-github-spring-gradle-project-import/embed/#?secret=mSmPFD8vjH#?secret=Hm5FfGZAwP" data-secret="Hm5FfGZAwP" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">Docker로 개발 환경을 빠르게 구축하는 것도 가능합니다. 다음 블로그 내용을 읽어보세요!</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-아빠프로그래머의-좌충우돌-개발하기"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="OP64FLR1uZ"><a href="https://www.daddyprogrammer.org/post/1994/docker-kitematic-mysql-redis-rabbitmq-mongo/">Docker로 빠르게 개발환경 구성하기(mysql, redis, rabbitmq, mongoDB)</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Docker로 빠르게 개발환경 구성하기(mysql, redis, rabbitmq, mongoDB)&#8221; &#8212; 아빠프로그래머의 좌충우돌 개발하기!" src="https://www.daddyprogrammer.org/post/1994/docker-kitematic-mysql-redis-rabbitmq-mongo/embed/#?secret=07ZjfSAd7B#?secret=OP64FLR1uZ" data-secret="OP64FLR1uZ" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">스프링 api 서버를 이용하여 웹사이트를 만들어보고 싶으시면 아래 포스팅을 참고해 주세요.</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-아빠프로그래머의-좌충우돌-개발하기"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="Qd2LrIQHCb"><a href="https://www.daddyprogrammer.org/post/6237/rest-api-angular-framework-make-website/">Spring Rest api + Angular framework로 웹사이트 만들기(1) &#8211; 프로젝트 구성 및 반응형 레이아웃 구현</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Spring Rest api + Angular framework로 웹사이트 만들기(1) &#8211; 프로젝트 구성 및 반응형 레이아웃 구현&#8221; &#8212; 아빠프로그래머의 좌충우돌 개발하기!" src="https://www.daddyprogrammer.org/post/6237/rest-api-angular-framework-make-website/embed/#?secret=mZuzhnYU4C#?secret=Qd2LrIQHCb" data-secret="Qd2LrIQHCb" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.daddyprogrammer.org/post/152/spring-boot2-h2-database-intergrate/">SpringBoot2로 Rest api 만들기(3) – H2 Database 연동</a> appeared first on <a href="https://www.daddyprogrammer.org">아빠프로그래머의 좌충우돌 개발하기!</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.daddyprogrammer.org/post/152/spring-boot2-h2-database-intergrate/feed/</wfw:commentRss>
			<slash:comments>26</slash:comments>
		
		
		
		<series:name><![CDATA[SpringBoot2로 Rest api 만들기]]></series:name>
	</item>
	</channel>
</rss>
