<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부하는 블로그</title>
    <link>https://noobnim.tistory.com/</link>
    <description>전혀 개발자다운 사람이 아니기에 노오력이라도 하기위해 시작하는 블로그.
개발에 대한 거침없는 훈계 환영합니다.</description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 17:06:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Noob_Nim</managingEditor>
    <item>
      <title>엔티티 매핑, 기본키 할당 전략</title>
      <link>https://noobnim.tistory.com/56</link>
      <description>&lt;p&gt;JAP 사용시 가장 중요한 일은 엔티티와 테이블의 정확한 매핑이다. 따라서 매핑 어노테이션을 반드시 숙지하고 있어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;■ 대표 어노테이션&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 객체와 테이블 매핑 : @Entity, @Table&lt;/p&gt;
&lt;p&gt;- 기본 키 매핑 : @Id&lt;/p&gt;
&lt;p&gt;- 필드와 컬럼 매핑 : @Column&lt;/p&gt;
&lt;p&gt;- 연관관계 매핑 : @ManyToOne, @JoinColumn&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;■&lt;span&gt; Entity&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;JAP를 사용해서 테이블과 매핑할 클레스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JAP가 관리하는 것으로, 엔티티라 부른다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 86.5116%;&quot;&gt;기능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.4884%;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 86.5116%;&quot;&gt;JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 다른패키지에 같은 엔티티 이름이 지정되지 않도록 해야한다. 설정하지 않으면 클래스 이름을 그대로 사용한다. ex) Member&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;@Entity 적용시의 주의 사항은 아래와 같다.&lt;/p&gt;
&lt;p&gt;- 기본생성자는 필수 (파라미터가 없는 public 또는 protected)&lt;/p&gt;
&lt;p&gt;- final, enum, interface, inner 클래스에는 사용할 수 없다.&lt;/p&gt;
&lt;p&gt;- 저장할 필드에 final을 사용하면 안된다.&lt;/p&gt;
&lt;p&gt;- 기본생성자는 반드시 있어야 한다. ex) public Member() {} // 기본생성자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;■&lt;span&gt;&lt;span&gt; Table&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;@Table은 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.5581%;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 77.4419%;&quot;&gt;기능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.5581%;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 77.4419%;&quot;&gt;매핑할 테이블 이름. 없을시 엔티티 이름을 사용한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.5581%;&quot;&gt;catalog&lt;/td&gt;
&lt;td style=&quot;width: 77.4419%;&quot;&gt;catalog 기능이 있는 데이터베이스에서 catalog를 매핑한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.5581%;&quot;&gt;schema&lt;/td&gt;
&lt;td style=&quot;width: 77.4419%;&quot;&gt;schema 기능이 있는 데이터베이스에서 schema를 매핑한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.5581%;&quot;&gt;uniqueConstraints (DDL)&lt;/td&gt;
&lt;td style=&quot;width: 77.4419%;&quot;&gt;DDL 생성 시에 유니크 제약조건을 만든다. 2개 이상의 복합 유니크 제약조건도 생성 가능하다. 해당 기능은 스키마 자동생성 기능을 사용해서 DDL을 만들시에만 사용한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;■ 기본키 할당 전략&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본키 직접 할당 전략은 em.persist() 로 엔티티를 저장하기 전에 애플리케이션에서 기본 키를 직접 할당하는 방법이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본키를 직접 할당하기 위해서는 @Id 로 매핑하면 된다.&lt;/p&gt;
&lt;pre class=&quot;brush:java; less&quot;&gt;
@Id
@Column(name = &quot;id&quot;)
private String id;
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;@Id 적용 가능 자바 타입은 다음과 같다.&lt;/p&gt;
&lt;p&gt;- 자바 기본형&lt;/p&gt;
&lt;p&gt;- 자바 래퍼(Wrapper) 형&lt;/p&gt;
&lt;p&gt;- String&lt;/p&gt;
&lt;p&gt;- java.util.Date&lt;/p&gt;
&lt;p&gt;- java.sql.Date&lt;/p&gt;
&lt;p&gt;- java.math.BigDecimal&lt;/p&gt;
&lt;p&gt;- java.math.BigInteger&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. IDENTITY 전략&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;IDENTITY 는 기본 키 생성을 데이터베이스에 위임하는전략이다. 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용한다. 데이터베이스에 값을 저장할 때 ID 컬럼을 비워두면 데이터베이스가 순서대로 값을 채워준다.&lt;/p&gt;
&lt;p&gt;사용하기 위해서는 @Id 어노테이션에 @GeneratedValue 어노테이션을 사용하고 식별자 생성 전략을 선택해야 한다.&lt;/p&gt;
&lt;p&gt;IDENTITY 전략을 사용하기 위해서는 strategy 속성 값을 GenerationType.IDENTITY 로 지정하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; less&quot;&gt;
@Entity
public class Board {
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    ...
}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. SEQUENCE 전략&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트다. SEQUENCE 전략은 이 시퀀스를 사용해서 기본 키를 생성한다. 주로 오라클, PostgreSQL, DB2, H2 데이터베이스에서 사용할 수 있다. 시퀀스는 미리 생성해두어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; less&quot;&gt;
@Entity
@SequenceGenerator(
	name = &quot;BOARD_SEQ_GENERATOR&quot;,
    sequenceName = &quot;BOARD_SEQ&quot;, // 매핑할 데이터베이스 시퀀스 이름
    initialValue = 1, allocationSize = 1)
    
public class Board {
	@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,
    		generator = &quot;BOARD_SEQ_GENERATOR&quot;)
    private Long id;
    ...
}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;@SequenceGenerator 를 사용해서 BOARD_SEQ_GENERATOR라는 시퀀스 생성기를 등록한다. 그리고 sequenceName 속성의 이름으로 BOARD_SEQ 를 지정했는데 JPA는 이 시퀀스 생성기를 실제 데이터베이스의 BOARD_SEQ 시퀀스와 매핑한다. 또한 키전략을 GenerationType.SEQUENCE로 설정하고 generator = &quot;&lt;span style=&quot;color: #333333;&quot;&gt;BOARD_SEQ_GENERATOR&lt;/span&gt;&quot; 로 방금 등록한 시퀀스를 선택한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- @SequenceGenerator 속성&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;기본값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;식별자 생성기 이름&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;필수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;sequenceName&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;데이터베이스에 등록되어 있는 시퀀스 이름&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;hibernate_sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;initalValue&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;DDL 생성 시에만 사용됨, 시퀀스 DDL을 생성할 때 처음 시작하는 수를 지정한다.&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;allocationSize&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;시퀀스 한 번 호출에 증가하는 수(성능 최적화에 사용됨)&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.7751%;&quot;&gt;catalog, schema&lt;/td&gt;
&lt;td style=&quot;width: 65.3101%;&quot;&gt;데이터베이스 catalog, schema 이름&lt;/td&gt;
&lt;td style=&quot;width: 18.9147%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>develop/JPA, Hibernate</category>
      <category>Entity</category>
      <category>JPA</category>
      <category>table</category>
      <category>기본키</category>
      <category>할당전략</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/56</guid>
      <comments>https://noobnim.tistory.com/56#entry56comment</comments>
      <pubDate>Mon, 16 Dec 2019 23:56:44 +0900</pubDate>
    </item>
    <item>
      <title>엔티티 매니저 등록/수정/삭제/조회 정리</title>
      <link>https://noobnim.tistory.com/55</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;JPA는 항상 엔티티 매니저를 통하여 등록/수정/삭제/조회 가 이루어진다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;- 등록&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; abnf&quot;&gt;
String id =&quot;id1&quot;;
Member member = new Member();
member.setId(id);
member.setUsername(&quot;사용자&quot;);
member.setAge(20);

em.persist(member);
&lt;/pre&gt;
&lt;p&gt;엔티티를 저장하려면 persist() 메소드에 저장할 엔티티를 넘겨주면 된다.&lt;/p&gt;
&lt;p&gt;위의 코드는 INSERT 와 같은 기능을 하게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;- 수정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; abnf&quot;&gt;
member.setAge(20);
&lt;/pre&gt;
&lt;p&gt;수정은 별도의 update()와 같은 메소드가 필요없이 set...()처럼 값만 변경해주면 가능하다.&lt;/p&gt;
&lt;p&gt;위의 코드는 UPDATE 와 같은 기능을 하게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;- 삭제&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; abnf&quot;&gt;
em.remove(member);
&lt;/pre&gt;
&lt;p&gt;삭제는 remove(member) 메소드를 사용한다.&lt;/p&gt;
&lt;p&gt;위의 코드는 DELETE 와 같은 기능을 하게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;- 단건 조회&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; abnf&quot;&gt;
Member member = em.find(Member.class, id);
&lt;/pre&gt;
&lt;p&gt;find() 메소드는 조회할 엔티티 타입과 @Id 로 데이터베이스 테이블의 기본키와 매핑한 식별자 값으로 조회한다.&lt;/p&gt;
&lt;p&gt;위의 코드는 SELECT 와 같은 기능을 하게 된다.&lt;/p&gt;</description>
      <category>develop/JPA, Hibernate</category>
      <category>등록</category>
      <category>삭제</category>
      <category>수정</category>
      <category>정리</category>
      <category>조회</category>
      <category>하이버네이트</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/55</guid>
      <comments>https://noobnim.tistory.com/55#entry55comment</comments>
      <pubDate>Sun, 24 Nov 2019 19:09:48 +0900</pubDate>
    </item>
    <item>
      <title>엔티티 매니저 설정, 생성과정</title>
      <link>https://noobnim.tistory.com/54</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;538&quot; width=&quot;806&quot; height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dP7br1/btqzXhIrpgm/3mVURLAc68j0QhRdAXpd30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dP7br1/btqzXhIrpgm/3mVURLAc68j0QhRdAXpd30/img.png&quot; data-alt=&quot;엔티티 매니저 생성 과정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dP7br1/btqzXhIrpgm/3mVURLAc68j0QhRdAXpd30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdP7br1%2FbtqzXhIrpgm%2F3mVURLAc68j0QhRdAXpd30%2Fimg.png&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;538&quot; width=&quot;806&quot; height=&quot;387&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;엔티티 매니저 생성 과정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;- 엔티티 매니저 팩토리 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;JPA응 시작하려면 첫번째로 persistance.xml의 설정 정보를 사용하여 엔티티 매니저 팩토리를 생성해야 한다. 이때 사용하는 클래스로 Persistance 를 사용하는데 이 클래스는 엔티티 매니저 팩토리를 생성해서 JAP를 사용할 수 있게 준비해준다.&lt;/p&gt;
&lt;pre class=&quot;brush:java; ebnf&quot;&gt;
EntityManagerFactory emf = Persistence.createEntityManagerFactory(&quot;jpabook&quot;);
&lt;/pre&gt;
&lt;p&gt;위와 같이 하면 META-INF/persistance.xml 에서 이름이 &quot;jpabook&quot;인 영속성 유닛 persistance-unit을 찾아서 엔티티 매니저 팩토리를 생성한다. &lt;b&gt;엔티티 매니저 펙토리를 생성하는 비용은 매우 크므로 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 엔티티 매니저 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; ebnf&quot;&gt;
EntityManager em = emf.createEntityManager();
&lt;/pre&gt;
&lt;p&gt;엔티티 매니저 팩토리에서 앤티티 매니저를 생성한다. JPA의 기능 대부분은 엔티티 매니저가 제공한다. 대표적으로 &lt;b&gt;엔티티 매니저를 사용해서 엔티티를 데이터베이스에 등록/수정/삭제/조회할 수 있다.&lt;/b&gt; 엔티티 매니저는 내부에 데이터소스를 유지하면서 데이터베이스와 통신하므로, 엔티티 매니저를 가상의 데이터베이스로 생각할 수 있다. &lt;b&gt;엔티티 매니저는 데이터베이스 커넥션과 밀접한 관계가 있으므로 스레드간에 공유하거나 재사용하면 안된다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 종료&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사용이 끝난 엔티티 매니저와 엔티티 매니저 팩토리는 다음처럼 반드시 종료해야 한다.&lt;/p&gt;
&lt;pre class=&quot;brush:java; ebnf&quot;&gt;
em.close();		// 엔티티 매니저 종료
emf.close();		// 엔티티 매니저 팩토리 종료
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 트랜잭션 관리&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;JPA를 사용하면 항상 트랜잭션 안에서 데이터베이스를 변경해야 한다. 트랜잭션없이 데이터를 변경하면 예외가 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>develop/JPA, Hibernate</category>
      <category>관리</category>
      <category>엔티티매니저</category>
      <category>엔티티매니저팩토리</category>
      <category>트랜잭션</category>
      <category>하이버네이트</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/54</guid>
      <comments>https://noobnim.tistory.com/54#entry54comment</comments>
      <pubDate>Sun, 24 Nov 2019 18:46:46 +0900</pubDate>
    </item>
    <item>
      <title>데이터베이스 방언</title>
      <link>https://noobnim.tistory.com/53</link>
      <description>&lt;p&gt;JAP는 특정 데이터베이스에 종속적이지 않은 기술이므로, 개발시 어느 데이터베이스를 사용하던지 손쉽게 교체 할 수 있고, 사용함에 있어서 이상이 없어야 한다. 일반적으로 각각의 데이터베이스는 문법과 함수가 다른데, 예를 들어서 아래와 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 데이터 타입 : 가변문자 타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2를 사용한다.&lt;/p&gt;
&lt;p&gt;- 다른 함수명 : 문자열을 자르는 함수로 예를 들면 SQL 표준은 SUBSTRING() 이지만, 오라클은 SUBSTR()을 사용한다.&lt;/p&gt;
&lt;p&gt;- 페이징 처리 : MySQL 은 LIMIT를 사용하지만 오라클은 ROWNUM을 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이와같이 SQL별로 표준을 지키지 않은 데이터베이스만의 고유한 기능을 '데이터베이스 방언' 이라고 한다. JAP 구현체는 이러한 문제점을 해결하기 위하여 데이터베이스 방언 클래스를 제공한다. JPA를 사용하고있는 프로젝트의 개발자는 이에 대하여 사용하는 데이터베이스가 변경되더라도 데이터베이스 방언만 교체하면 쉽게 데이터베이스를 변경할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;646&quot; height=&quot;412&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KVZOh/btqzaRC05ug/Rdt7NawJa4NUdyAKR1YxR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KVZOh/btqzaRC05ug/Rdt7NawJa4NUdyAKR1YxR0/img.png&quot; data-alt=&quot;데이터베이스 방언을 사용하는 예&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KVZOh/btqzaRC05ug/Rdt7NawJa4NUdyAKR1YxR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKVZOh%2FbtqzaRC05ug%2FRdt7NawJa4NUdyAKR1YxR0%2Fimg.png&quot; width=&quot;646&quot; height=&quot;412&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;485&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 방언을 사용하는 예&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하이버네이트에는 다양한 데이터베이스 방언을 제공한다. 대표적으로 아래와 같다.&lt;/p&gt;
&lt;p&gt;- H2: org.hibernate.dialect.H2Dealect&lt;/p&gt;
&lt;p&gt;- 오라클 10g : &lt;span style=&quot;color: #333333;&quot;&gt;org.hibernate.dialect.Oracle10gDialect&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- MySQL : &lt;span style=&quot;color: #333333;&quot;&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;● 참고&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하이버네이트가 지원하는 여러 데이터베이스 방언 항목들&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects&quot;&gt;http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1574586714642&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HIBERNATE - Relational Persistence for Idiomatic Java&quot; data-og-description=&quot;Sometimes, you probably don't want to implement an intrusive interface, maybe due to portable concern, which is fine and Hibernate will take care of this internally with a wrapper class which implements that interface, and also an internal cache that maps &quot; data-og-host=&quot;docs.jboss.org&quot; data-og-source-url=&quot;http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects&quot; data-og-url=&quot;https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMAE7z/hyDONWaysl/K7vQ1MmEwkmKI1SaceeT2k/img.png?width=482&amp;amp;height=394&amp;amp;face=0_0_482_394,https://scrap.kakaocdn.net/dn/cTikO2/hyDOThMeAy/koHwiUy9DkXB5UU6TL0kXk/img.png?width=454&amp;amp;height=295&amp;amp;face=0_0_454_295,https://scrap.kakaocdn.net/dn/hXhr0/hyDOUAZFGu/f1eSeTaTfqPCT73i2URSXK/img.png?width=340&amp;amp;height=380&amp;amp;face=0_0_340_380&quot;&gt;&lt;a href=&quot;https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#configuration-optional-dialects&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMAE7z/hyDONWaysl/K7vQ1MmEwkmKI1SaceeT2k/img.png?width=482&amp;amp;height=394&amp;amp;face=0_0_482_394,https://scrap.kakaocdn.net/dn/cTikO2/hyDOThMeAy/koHwiUy9DkXB5UU6TL0kXk/img.png?width=454&amp;amp;height=295&amp;amp;face=0_0_454_295,https://scrap.kakaocdn.net/dn/hXhr0/hyDOUAZFGu/f1eSeTaTfqPCT73i2URSXK/img.png?width=340&amp;amp;height=380&amp;amp;face=0_0_340_380');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;HIBERNATE - Relational Persistence for Idiomatic Java&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Sometimes, you probably don't want to implement an intrusive interface, maybe due to portable concern, which is fine and Hibernate will take care of this internally with a wrapper class which implements that interface, and also an internal cache that maps&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.jboss.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>develop/JPA, Hibernate</category>
      <category>hibernate</category>
      <category>JPA</category>
      <category>데이터베이스 방언</category>
      <category>정의</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/53</guid>
      <comments>https://noobnim.tistory.com/53#entry53comment</comments>
      <pubDate>Sat, 19 Oct 2019 20:59:20 +0900</pubDate>
    </item>
    <item>
      <title>트랜잭션 (Transaction) 이란?</title>
      <link>https://noobnim.tistory.com/52</link>
      <description>&lt;p&gt;&lt;b&gt;■ 트랜잭션 이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;데이터베이스의 상태를 변환시키는 하나의 논리적인 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ 트랜잭션의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업시 처리되는 논리적인 작업 단위이다.&lt;/p&gt;
&lt;p&gt;2. 사용자가 시스템에 대한 서비스 요구시 시스템이 응답하기 위한 상태변환의 작업단위이다.&lt;/p&gt;
&lt;p&gt;3. 하나의 트랜잭션은 Commit 되거나 Rollback 되어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ 트랜잭션의 성질&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- Atomicity (원자성)&lt;/p&gt;
&lt;p&gt;1. 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 아니면 전부 반영되지 말아야 한다.&lt;/p&gt;
&lt;p&gt;2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 어느 하나라도 오류가 발생한다면 트랜잭션 전부가 취소되어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Consistancy (일관성)&lt;/p&gt;
&lt;p&gt;1. 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다.&lt;/p&gt;
&lt;p&gt;2. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Isolation (톡립성, 격리성)&lt;/p&gt;
&lt;p&gt;1. 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.&lt;/p&gt;
&lt;p&gt;2. 수행중인 트랜잭션은 완전히 완료될 때 까지 다른 트랜잭션에서 수행결과를 참조할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Durability (영속성, 지속성)&lt;/p&gt;
&lt;p&gt;1. 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ Commit 연산&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. Commit 연산은 한개의 논리적 트랜잭션 단위에 대한 작업이 성공적으로 끝났고 데이터베이스가 일관성 있는 상태가 되었을때, 트랜잭션이 수행한 갱신 연산이 완료되었음을 관리자에게 알려주는 연산이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ Rollback 연산&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1. Rollback 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨트렸을때 트랜잭션의 일부가 정상처리 되었더라도 트랜잭션의 원자성을 구현하기 위해 트랜잭션이 행한 연산을 모두 취소하는 연산이다.&lt;/p&gt;
&lt;p&gt;2. Rollback 시에는 해당 트랜잭션을 재시작하거나 폐기한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ 트랜잭션의 상태&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- Active (활동) : 트랜잭션이 실행중인 상태&lt;/p&gt;
&lt;p&gt;- Failed (실패) : 트랜잭션이 수행중 오류가 발생하여 중단된 상태&lt;/p&gt;
&lt;p&gt;- Aborted (철회) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태&lt;/p&gt;
&lt;p&gt;- Partially Committed (부분 완료) : 트랜잭션이 마지막 연산까지 수행했지만, Commit 연산이 수행되기 전의 상태&lt;/p&gt;
&lt;p&gt;- Committed (완료) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 수행하고 난 상태&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;출처) &lt;a href=&quot;https://coding-factory.tistory.com/226&quot;&gt;https://coding-factory.tistory.com/226&lt;/a&gt;&lt;/p&gt;</description>
      <category>IT 용어 정리</category>
      <category>commit</category>
      <category>rollback</category>
      <category>transaction</category>
      <category>정의</category>
      <category>트랜잭션</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/52</guid>
      <comments>https://noobnim.tistory.com/52#entry52comment</comments>
      <pubDate>Mon, 14 Oct 2019 15:56:51 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 런레벨 간단 정리</title>
      <link>https://noobnim.tistory.com/51</link>
      <description>&lt;p&gt;&lt;b&gt;■ Run level 이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;리눅스 시스템의 관리의 용이함을 위해 &lt;b&gt;서비스의 실행을 단계별로 구분&lt;/b&gt;하여 적용하는 것을 말합니다.&lt;/p&gt;
&lt;p&gt;리눅스의 런레벨은 0~6까지 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주로 사용하는 런레벨은 0, 3, 5, 6 이며, 런레벨의 변경은 root 사용자만 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 0 - halt (DO NOT set initdefault to this)&lt;/p&gt;
&lt;p&gt;시스템 종료를 의미합니다. 런레벨을 0으로 변경하는것은 시스템 종료를 의미합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 1 - Single User Mode&lt;/p&gt;
&lt;p&gt;시스템 복원모드 라고도 불리며, 기본적으로 관리자 권한 쉘을 얻게 됩니다.&lt;/p&gt;
&lt;p&gt;주로 파일시스템을 점검하거나 관리자 암호를 변경할때 쓰입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 2 - Multi User Mode&lt;/p&gt;
&lt;p&gt;NFS(Network File System) 를 지원하지 않는 다중 사용자 모드입니다.&lt;/p&gt;
&lt;p&gt;네트워크를 사용하지 않는 텍스트 유저 모드라고 보면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 3 - Full Milti User Mode&lt;/p&gt;
&lt;p&gt;일반적인 쉘 기반의 인터페이스를 가진 다중 사용자 모드입니다.&lt;/p&gt;
&lt;p&gt;쉽게 말하면 그래픽 유저 모드가 아닌 텍스트 유저 모드 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 4 - unused&lt;/p&gt;
&lt;p&gt;4번은 쓰이지 않습니다. 기본적으로는 사용되지 않지만 임의로 정해서 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 5 - X11&lt;/p&gt;
&lt;p&gt;기본적으로는 레벨3과 같습니다. 다른점은 그래픽 유저모드 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 6 - reboot&lt;/p&gt;
&lt;p&gt;시스템 재부팅을 의미합니다. &lt;span style=&quot;color: #333333;&quot;&gt;런레벨을 6으로 변경하는것은 시스템 재부팅을 의미합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;시스템적으로 자세한 변경 방법은 원하신다면 하단의 출처를 참고 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;출처) &lt;a href=&quot;https://kateee.tistory.com/51&quot;&gt;https://kateee.tistory.com/51&lt;/a&gt;&lt;/p&gt;</description>
      <category>IT 용어 정리</category>
      <category>Linux</category>
      <category>RunLevel</category>
      <category>런레벨</category>
      <category>정리</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/51</guid>
      <comments>https://noobnim.tistory.com/51#entry51comment</comments>
      <pubDate>Mon, 14 Oct 2019 12:32:04 +0900</pubDate>
    </item>
    <item>
      <title>웹개발 환경 세팅 - 6. QueryDSL 설정하기</title>
      <link>https://noobnim.tistory.com/50</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹개발 환경 세팅&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 5. 프로젝트에 DB연동하기 with yml (&lt;a href=&quot;https://noobnim.tistory.com/48&quot;&gt;https://noobnim.tistory.com/48&lt;/a&gt;) 에 이어서 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1570971007614&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;웹개발 환경 세팅 - 5. 프로젝트에 DB 연동하기 with yml&quot; data-og-description=&quot;웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인하기 (https://noobnim.tistory.com/47?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기 웹개발 환경 세팅 - 3. Spring..&quot; data-og-host=&quot;noobnim.tistory.com&quot; data-og-source-url=&quot;https://noobnim.tistory.com/48&quot; data-og-url=&quot;https://noobnim.tistory.com/48&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKHYaH/hyDeuBOeh9/vkvrjOH7eARSM5Z6TwE4X1/img.png?width=508&amp;amp;height=489&amp;amp;face=0_0_508_489,https://scrap.kakaocdn.net/dn/bBeqTE/hyDeqTKq5a/Bok206EUyVis7VLoMKOu0K/img.png?width=508&amp;amp;height=489&amp;amp;face=0_0_508_489,https://scrap.kakaocdn.net/dn/IRp79/hyDewTXLF3/wRNLTwOwkZbH5rHKoOgLrK/img.png?width=467&amp;amp;height=505&amp;amp;face=0_0_467_505&quot;&gt;&lt;a href=&quot;https://noobnim.tistory.com/48&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://noobnim.tistory.com/48&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKHYaH/hyDeuBOeh9/vkvrjOH7eARSM5Z6TwE4X1/img.png?width=508&amp;amp;height=489&amp;amp;face=0_0_508_489,https://scrap.kakaocdn.net/dn/bBeqTE/hyDeqTKq5a/Bok206EUyVis7VLoMKOu0K/img.png?width=508&amp;amp;height=489&amp;amp;face=0_0_508_489,https://scrap.kakaocdn.net/dn/IRp79/hyDewTXLF3/wRNLTwOwkZbH5rHKoOgLrK/img.png?width=467&amp;amp;height=505&amp;amp;face=0_0_467_505');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;웹개발 환경 세팅 - 5. 프로젝트에 DB 연동하기 with yml&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인하기 (https://noobnim.tistory.com/47?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기 웹개발 환경 세팅 - 3. Spring..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;noobnim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MariaDB를 기반으로 한 QueryDSL을 적용하도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. Build.gradle 설정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;363&quot; height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUEN0Z/btqyYP0oxPK/wlwAAQ0uS2pKODfkpNqUSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUEN0Z/btqyYP0oxPK/wlwAAQ0uS2pKODfkpNqUSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUEN0Z/btqyYP0oxPK/wlwAAQ0uS2pKODfkpNqUSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUEN0Z%2FbtqyYP0oxPK%2FwlwAAQ0uS2pKODfkpNqUSk%2Fimg.png&quot; width=&quot;363&quot; height=&quot;433&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;프로젝트의 build.gradle 파일을 열도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
buildscript {
    ext {
        ...
        querydslPluginVersion = '1.0.10' // 플러그인 버전
    }
    repositories {
        ...
        maven { url &quot;https://plugins.gradle.org/m2/&quot; } // 플러그인 저장소
    }
    dependencies {
        ...
        classpath(&quot;gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:${querydslPluginVersion}&quot;) // querydsl 플러그인 의존성 등록
    }
}
&lt;/pre&gt;
&lt;p&gt;springboot 설정시 세팅했던 buildscript 부분에 위와같이 3개의 항목을 각각 추가합니다.&lt;/p&gt;
&lt;p&gt;위의 플러그인이 있어야 QClass 가 생성이 됩니다.&lt;/p&gt;
&lt;p&gt;QClass는 Querydsl의 중심이 되는 역할을 하게 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음으로 &lt;span&gt;dependencies 에 querydsl과 mariadb의 라이브러리를 추가하도록 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
dependencies {
    ...
    compile(&quot;com.querydsl:querydsl-jpa&quot;)
    compile(&quot;com.querydsl:querydsl-apt&quot;)
    ...
}
&lt;/pre&gt;
&lt;p&gt;지난 springboot 설정때 추가했던 dependencies 에 추가로 적용한 부분입니다.&lt;/p&gt;
&lt;p&gt;querydsl 이 라이브러리를 추가하도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
apply plugin: &quot;com.ewerk.gradle.plugins.querydsl&quot; // Plugin 적용
def querydslSrcDir = 'src/main/generated' // QClass 생성 위치

querydsl {
    library = &quot;com.querydsl:querydsl-apt&quot;
    jpa = true
    querydslSourcesDir = querydslSrcDir
}

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java', querydslSrcDir]
        }
    }
}

compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}

configurations {
    querydsl.extendsFrom compileClasspath
}
&lt;/pre&gt;
&lt;p&gt;이제 위에서 설정한 Plugin을 사용할 Task를 추가합니다.&lt;/p&gt;
&lt;p&gt;저는 gradle 5버전을 사용하고 있어서 하단에 compileQuerydsl 와 configurations 두 부분을 추가했습니다.&lt;/p&gt;
&lt;p&gt;gradle 5버전을 사용하지 않으면 위의 두 부분은 추가가 필요없다고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. &lt;span&gt;QuerydslConfiguration 생성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프로젝트의 src/main/java 경로에 &lt;span&gt;QuerydslConfiguration 를 생성하도록 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;저는 프로젝트 하단에 querydsl 패키지를 별도로 생성하여 추가하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
package com.webhome.querydsl;

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Configuration
public class QuerydslConfiguration {

    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}
&lt;/pre&gt;
&lt;p&gt;QuerydslConfiguration 의 코드입니다.&lt;/p&gt;
&lt;p&gt;추가시 프로젝트의 어느곳에서나 &lt;span&gt;JPAQueryFactory 를 주입받아&amp;nbsp; querydsl 을 사용할 수 있다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;3. 테스트를 위한 설정&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저는 우선적으로 DB에 테스트용 테이블을 생성해둔 상태입니다.&lt;/p&gt;
&lt;p&gt;제가 생성한 Member table을 기반으로 테스트를 진행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1) 엔티티 생성&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
package com.webhome.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=&quot;member&quot;)
public class Member {
    @Id
    @Column(name = &quot;ID&quot;)
    private String id;

    @Column(name = &quot;NAME&quot;)
    private String username;

    @Column(name = &quot;AGE&quot;)
    private String age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

&lt;/pre&gt;
&lt;p&gt;제가 생성한 Member 테이블의 엔티티입니다.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@Entity 어노테이션으로 엔티티임을 명시합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;@Table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;member&quot;&lt;/span&gt;&lt;span&gt;) 생성한 테이블 명을 입력합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;@Id 는 해당 테이블의 키값임을 알리는 표시입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;@column 은 Member 테이블의 각 컬럼을 알리는 표시입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;2) Repository 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
package com.webhome.repository;

import com.webhome.model.Member;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository&amp;lt;Member, Long&amp;gt; {
}
&lt;/pre&gt;
&lt;p&gt;테스트용으로 검증할 Repository를 생성합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3) QClass 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;522&quot; height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFmqXy/btqy0FikvwI/pUR4jQClZdkEl2w4EVDew0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFmqXy/btqy0FikvwI/pUR4jQClZdkEl2w4EVDew0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFmqXy/btqy0FikvwI/pUR4jQClZdkEl2w4EVDew0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFmqXy%2Fbtqy0FikvwI%2FpUR4jQClZdkEl2w4EVDew0%2Fimg.png&quot; width=&quot;522&quot; height=&quot;490&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Intellij의 우측 사이드에보시면 Gradle 항목이 보입니다.&lt;/p&gt;
&lt;p&gt;Gradle &amp;gt; Tasks &amp;gt; other 에 보면 compileQuerydsl 이 보입니다. 더블클릭하여 실행하면&lt;/p&gt;
&lt;p&gt;src/main/generated 항목 안에 위에서 생성한 엔티티와 같은 경로로 QClass 파일이 생성됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4) 데이터 추출&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저는 우선적으로 제대로 연동되는지 만을 확인하기 위하여 RestController에 바로&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Repository를 사용하여 데이터를 추출하였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; gradle&quot;&gt;
package com.webhome.controller;

import com.webhome.model.Member;
import com.webhome.repository.MemberRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class HomeController {

    //private Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private MemberRepository memberRepository;

    @RequestMapping(&quot;/&quot;)
    public String index(){
        List members = memberRepository.findAll();

        return members.get(0).getUsername();
    }
}
&lt;/pre&gt;
&lt;p&gt;위와같이 입력하고나면 이제 설정은 끝났습니다.&lt;/p&gt;
&lt;p&gt;서버를 실행하여 localhost에 접속하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;419&quot; height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIRLKH/btqyZYJq2Dj/aLncR1fCk2xCLPvo8mWHyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIRLKH/btqyZYJq2Dj/aLncR1fCk2xCLPvo8mWHyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIRLKH/btqyZYJq2Dj/aLncR1fCk2xCLPvo8mWHyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIRLKH%2FbtqyZYJq2Dj%2FaLncR1fCk2xCLPvo8mWHyk%2Fimg.png&quot; width=&quot;419&quot; height=&quot;205&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위와같이 테이블에 입력해둔 맴버의 이름이 표시됨을 확인 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;출처) &lt;a href=&quot;https://jojoldu.tistory.com/372&quot;&gt;https://jojoldu.tistory.com/372&lt;/a&gt;&lt;/p&gt;</description>
      <category>개발환경/windows 웹개발</category>
      <category>Gradle</category>
      <category>intellij</category>
      <category>QueryDSL</category>
      <category>적용</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/50</guid>
      <comments>https://noobnim.tistory.com/50#entry50comment</comments>
      <pubDate>Sun, 13 Oct 2019 23:17:00 +0900</pubDate>
    </item>
    <item>
      <title>JPQL 이란? (querydsl)</title>
      <link>https://noobnim.tistory.com/49</link>
      <description>&lt;p&gt;&lt;b&gt;■ JPQL 이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;JPQL에 대해 설명하기 전에 JPA는 기본적인 SQL을 처리해주기 때문에 SQL문을 직접 사용할 필요가 없었다. 하지만 JPA는 하나의 테이블을 대상으로 했을때만 가능한 이야기이며, 특정 데이터를 가져올 경우가 필요할 때는 불필요하게 모든 데이터를 가져오게 되는 낭비가 있다. 이러한 점을 해결하기 위해 &lt;b&gt;JPQL (&lt;span style=&quot;color: #666666;&quot;&gt;Java Persistence Query Language&lt;/span&gt;) &lt;/b&gt;라는 쿼리 언어를 사용한다. SQL은 데이터베이스 테이블을 대상으로 쿼리가 작성 되지만, JPQL은 엔티티 객체를 대상으로 쿼리가 작성된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; dart&quot;&gt;
List members = em.createQuery(&quot;select m from Member m&quot;, Member.class).getResultList();
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ QueryDSL 이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;JPQL의 빌더 역할을 하는 오픈소스이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ex)&lt;/p&gt;
&lt;pre class=&quot;brush:java; dart&quot;&gt;
QMember qMember = QMember.member;

        Member member = queryFactory.select(qMember)
                .from(qMember)
                .orderBy(qMember.id.asc())
                .fetchFirst();
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;출처) &lt;a href=&quot;https://cornswrold.tistory.com/332&quot;&gt;https://cornswrold.tistory.com/332&lt;/a&gt;&lt;/p&gt;</description>
      <category>develop/JPA, Hibernate</category>
      <category>JPQL</category>
      <category>QueryDSL</category>
      <category>정의</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/49</guid>
      <comments>https://noobnim.tistory.com/49#entry49comment</comments>
      <pubDate>Sat, 12 Oct 2019 21:40:28 +0900</pubDate>
    </item>
    <item>
      <title>웹개발 환경 세팅 - 5. 프로젝트에 DB 연동하기 with yml</title>
      <link>https://noobnim.tistory.com/48</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹개발 환경 세팅&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt; 4. mariaDB 설치, 설치확인하기 (&lt;a href=&quot;https://noobnim.tistory.com/47?category=847081&quot;&gt;https://noobnim.tistory.com/47?category=847081&lt;/a&gt;) 에 이어서 진행합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1570880215982&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기&quot; data-og-description=&quot;웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 3. Spring Boot 적용하기 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기..&quot; data-og-host=&quot;noobnim.tistory.com&quot; data-og-source-url=&quot;https://noobnim.tistory.com/47?category=847081&quot; data-og-url=&quot;https://noobnim.tistory.com/47&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gaahy/hyDctqfLto/lwG6NFQFCYQc9srK91ozx1/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387,https://scrap.kakaocdn.net/dn/EnvPL/hyDcDl6epr/VTR8exGa7qUdh8tSqqZ9Bk/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387,https://scrap.kakaocdn.net/dn/clO2pr/hyDetCaavN/nKThdoTWaafQ9aLZqR7VB1/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387&quot;&gt;&lt;a href=&quot;https://noobnim.tistory.com/47&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://noobnim.tistory.com/47?category=847081&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gaahy/hyDctqfLto/lwG6NFQFCYQc9srK91ozx1/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387,https://scrap.kakaocdn.net/dn/EnvPL/hyDcDl6epr/VTR8exGa7qUdh8tSqqZ9Bk/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387,https://scrap.kakaocdn.net/dn/clO2pr/hyDetCaavN/nKThdoTWaafQ9aLZqR7VB1/img.png?width=495&amp;amp;height=387&amp;amp;face=0_0_495_387');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;웹개발 환경 세팅 - 3. Spring Boot 적용하기 (https://noobnim.tistory.com/44?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 3. Spring Boot 적용하기 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;noobnim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. yml 적용하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저는 프로젝트에 yml 을 이용하여 DB를 연동하기로 했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;458&quot; height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BDRpL/btqy0pNebD5/Tmwn2xpakiLb8kKatvqHLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BDRpL/btqy0pNebD5/Tmwn2xpakiLb8kKatvqHLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BDRpL/btqy0pNebD5/Tmwn2xpakiLb8kKatvqHLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBDRpL%2Fbtqy0pNebD5%2FTmwn2xpakiLb8kKatvqHLK%2Fimg.png&quot; width=&quot;458&quot; height=&quot;441&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;프로젝트에서 build.gradle을 열도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; clean&quot;&gt;
dependencies {
    ...
    compile(&quot;org.mariadb.jdbc:mariadb-java-client&quot;)
    ...
}
&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;dependencies 에 위와 같이 mariadb jdbc를 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; clean&quot;&gt;
processResources {
    filesMatching(&quot;**/application.yml&quot;) {
        expand(project.properties)
    }
}
&lt;/pre&gt;
&lt;p&gt;기본으로 생성되는 src/main/resources의 아래에 application.yml 를 추가하여 사용하기 위한 세팅을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;415&quot; height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Siihr/btqy1hgqC0h/hfU84NoHL9jF2dJ9XQUSU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Siihr/btqy1hgqC0h/hfU84NoHL9jF2dJ9XQUSU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Siihr/btqy1hgqC0h/hfU84NoHL9jF2dJ9XQUSU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSiihr%2Fbtqy1hgqC0h%2FhfU84NoHL9jF2dJ9XQUSU1%2Fimg.png&quot; width=&quot;415&quot; height=&quot;449&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;src/main/resources 에 application.yml 을 생성합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;brush:java; clean&quot;&gt;
spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver    # mariadb의 jdbc 드라이버
    username: 디비 ID		  # 데이터베이스 사용자 ID
    password: 비밀번호		# 데이터베이스 사용자 비밀번호
    url: jdbc:mariadb://localhost:3306/디비명		# 데이터베이스 url
&lt;/pre&gt;
&lt;p&gt;application.yml 에 위와 같이 디비연결의 기본적인 세팅을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;디비연동은 위와같이 간단하게 마무리됩니다.&lt;/p&gt;
&lt;p&gt;다음 포스팅에 이어서 querydsl 을 적용하여 기본적인 테스트를 진행하도록 하겠습니다.&lt;/p&gt;</description>
      <category>개발환경/windows 웹개발</category>
      <category>MariaDB</category>
      <category>yml</category>
      <category>연동</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/48</guid>
      <comments>https://noobnim.tistory.com/48#entry48comment</comments>
      <pubDate>Sat, 12 Oct 2019 21:19:03 +0900</pubDate>
    </item>
    <item>
      <title>웹개발 환경 세팅 - 4. mariaDB 설치, 설치확인 하기</title>
      <link>https://noobnim.tistory.com/47</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹개발 환경 세팅 -&lt;span&gt; 3. Spring Boot 적용하기 (&lt;a href=&quot;https://noobnim.tistory.com/44?category=847081&quot;&gt;https://noobnim.tistory.com/44?category=847081&lt;/a&gt;) 에 이어서 진행합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1570873386349&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;웹개발 환경 세팅 - 3. Spring Boot 적용하기&quot; data-og-description=&quot;웹개발 환경 세팅 - 2. 웹프로젝트 생성하기(https://noobnim.tistory.com/20?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기 웹개발 환경 세팅 - 1.Intellij Community 설치..&quot; data-og-host=&quot;noobnim.tistory.com&quot; data-og-source-url=&quot;https://noobnim.tistory.com/44?category=847081&quot; data-og-url=&quot;https://noobnim.tistory.com/44&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kM0id/hyDcubBGZt/IevjikozVkZvWX0auAbpHk/img.png?width=800&amp;amp;height=544&amp;amp;face=0_0_800_544,https://scrap.kakaocdn.net/dn/beaXy7/hyDelRDkkP/hM16VdPYjqjMfrNCUCldR0/img.png?width=1613&amp;amp;height=1026&amp;amp;face=0_0_1613_1026,https://scrap.kakaocdn.net/dn/deXT3W/hyDcCtV050/9J6HW02uuiFDBG8tFDmn60/img.png?width=1613&amp;amp;height=1026&amp;amp;face=0_0_1613_1026&quot;&gt;&lt;a href=&quot;https://noobnim.tistory.com/44&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://noobnim.tistory.com/44?category=847081&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kM0id/hyDcubBGZt/IevjikozVkZvWX0auAbpHk/img.png?width=800&amp;amp;height=544&amp;amp;face=0_0_800_544,https://scrap.kakaocdn.net/dn/beaXy7/hyDelRDkkP/hM16VdPYjqjMfrNCUCldR0/img.png?width=1613&amp;amp;height=1026&amp;amp;face=0_0_1613_1026,https://scrap.kakaocdn.net/dn/deXT3W/hyDcCtV050/9J6HW02uuiFDBG8tFDmn60/img.png?width=1613&amp;amp;height=1026&amp;amp;face=0_0_1613_1026');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;웹개발 환경 세팅 - 3. Spring Boot 적용하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;웹개발 환경 세팅 - 2. 웹프로젝트 생성하기(https://noobnim.tistory.com/20?category=847081) 에 이어서 진행합니다. 웹개발 환경 세팅 - 2. 웹프로젝트 생성하기 웹개발 환경 세팅 - 1.Intellij Community 설치..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;noobnim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저의 개인적인 개발용 데이터베이스로 MriaDB를 설치해보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. MariaDB 설치하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://downloads.mariadb.org/&quot;&gt;https://downloads.mariadb.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1570873558996&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Downloads
         - MariaDB&quot; data-og-description=&quot;&quot; data-og-host=&quot;downloads.mariadb.org&quot; data-og-source-url=&quot;https://downloads.mariadb.org/&quot; data-og-url=&quot;https://downloads.mariadb.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://downloads.mariadb.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://downloads.mariadb.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Downloads - MariaDB&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;downloads.mariadb.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;위의 다운로드 URL로 이동합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct15RV/btqy1JqcvhF/cDqFekxY6T1kdd4qx3qb01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct15RV/btqy1JqcvhF/cDqFekxY6T1kdd4qx3qb01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct15RV/btqy1JqcvhF/cDqFekxY6T1kdd4qx3qb01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct15RV%2Fbtqy1JqcvhF%2FcDqFekxY6T1kdd4qx3qb01%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Download 10.4.8 Stable Now! 를 클릭하여 이동합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NtFmi/btqy0pGqAlk/KTyfmAWhQgRaZ025UaFK4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NtFmi/btqy0pGqAlk/KTyfmAWhQgRaZ025UaFK4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NtFmi/btqy0pGqAlk/KTyfmAWhQgRaZ025UaFK4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNtFmi%2Fbtqy0pGqAlk%2FKTyfmAWhQgRaZ025UaFK4K%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;자신의 운영체제에 맞는 버전을 다운받도록 합니다.&lt;/p&gt;
&lt;p&gt;저는 windows 환경으로 다운로드 받았으며, 클릭하고 잠시후면 다운로드가 진행됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zknKb/btqyYQZhVRf/LmKC1ELd77wfZXN0fth9t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zknKb/btqyYQZhVRf/LmKC1ELd77wfZXN0fth9t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zknKb/btqyYQZhVRf/LmKC1ELd77wfZXN0fth9t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzknKb%2FbtqyYQZhVRf%2FLmKC1ELd77wfZXN0fth9t1%2Fimg.png&quot; width=&quot;714&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;다운로드가 완료되면 mariadb-10.4.8-winx64 파일을 더블클릭하여 실행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저는 이미 설치를 해버려서 설치프로그램 캡쳐는 &lt;a href=&quot;https://offbyone.tistory.com/199&quot;&gt;https://offbyone.tistory.com/199&lt;/a&gt; 해당 링크를 참고로 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b90imv/btqyYPzkL1j/Lq43aTLn82UK3rn1U583wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b90imv/btqyYPzkL1j/Lq43aTLn82UK3rn1U583wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b90imv/btqyYPzkL1j/Lq43aTLn82UK3rn1U583wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb90imv%2FbtqyYPzkL1j%2FLq43aTLn82UK3rn1U583wk%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Next 를 클릭하여 진행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOfRV/btqy0FoMQIz/YkdCeoszVcLP1tfKfJSpF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOfRV/btqy0FoMQIz/YkdCeoszVcLP1tfKfJSpF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOfRV/btqy0FoMQIz/YkdCeoszVcLP1tfKfJSpF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOfRV%2Fbtqy0FoMQIz%2FYkdCeoszVcLP1tfKfJSpF1%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;라이센스 동의여부에 체크를 한 후 Next클릭으로 진행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JwTWU/btqy0FPOt0I/KUaak2PZj9NQYLY3DMKCPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JwTWU/btqy0FPOt0I/KUaak2PZj9NQYLY3DMKCPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JwTWU/btqy0FPOt0I/KUaak2PZj9NQYLY3DMKCPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJwTWU%2Fbtqy0FPOt0I%2FKUaak2PZj9NQYLY3DMKCPk%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설치 위치 지정부분 입니다. 기본으로 두면 C:\Program Files\MariaDB 10.4 경로에 설치됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI1C3k/btqy03inS8R/J5bZZi3M76CSKxujj4x8l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI1C3k/btqy03inS8R/J5bZZi3M76CSKxujj4x8l0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI1C3k/btqy03inS8R/J5bZZi3M76CSKxujj4x8l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI1C3k%2Fbtqy03inS8R%2FJ5bZZi3M76CSKxujj4x8l0%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;root계정의 비밀번호를 입력하는 부분입니다.&lt;/p&gt;
&lt;p&gt;- 중간의 Enable access from remote machines for 'root' user 는 외부에서 root계정으로 접속을 허용하겠다는 체크입니다. 저는 체크하지 않았습니다.&lt;/p&gt;
&lt;p&gt;- Use UTF8 as default server's character set 을 체크하여 서버의 기본 캐릭터 셋을 UTF8로 지정합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNVJR/btqy03JsnCv/3A7jDEGVJ1I6iQS1sjZMa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNVJR/btqy03JsnCv/3A7jDEGVJ1I6iQS1sjZMa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNVJR/btqy03JsnCv/3A7jDEGVJ1I6iQS1sjZMa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNVJR%2Fbtqy03JsnCv%2F3A7jDEGVJ1I6iQS1sjZMa0%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;- Install as service 를 체크하고 서비스명은 기본인 MySQL을 사용합니다.&lt;/p&gt;
&lt;p&gt;- Enable networking 을 체크하고, 포트는 기본인 3306을 사용하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Next를 클릭하여 진행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sQq7D/btqyYPlM5Kx/xFE1I4alRFVtXkfKhQNlKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sQq7D/btqyYPlM5Kx/xFE1I4alRFVtXkfKhQNlKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sQq7D/btqyYPlM5Kx/xFE1I4alRFVtXkfKhQNlKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsQq7D%2FbtqyYPlM5Kx%2FxFE1I4alRFVtXkfKhQNlKk%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;MariaDB의 사용정보를 제조사로 전송한다는 여부의 체크이며, 체크하지 않고 Next로 진행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qWHRZ/btqyZt3HrrF/AMTNYYGrLBLksZPPxXKePK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qWHRZ/btqyZt3HrrF/AMTNYYGrLBLksZPPxXKePK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qWHRZ/btqyZt3HrrF/AMTNYYGrLBLksZPPxXKePK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqWHRZ%2FbtqyZt3HrrF%2FAMTNYYGrLBLksZPPxXKePK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Install 을 클릭하여 설치를 진행합니다.&lt;/p&gt;
&lt;p&gt;이후 설치가 완료되면 Finish를 클릭하여 설치를 완료하도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. MariaDB 설치 확인하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; width=&quot;604&quot; height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evtV44/btqy1ISnjfx/zWJd89o5Cv4JmlzbTuiLJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evtV44/btqy1ISnjfx/zWJd89o5Cv4JmlzbTuiLJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evtV44/btqy1ISnjfx/zWJd89o5Cv4JmlzbTuiLJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevtV44%2Fbtqy1ISnjfx%2FzWJd89o5Cv4JmlzbTuiLJ0%2Fimg.png&quot; width=&quot;604&quot; height=&quot;214&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;시작메뉴 &amp;gt; MariaDB 10.4 &amp;gt; MySQL Client 를 실행하도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ch3Ac/btqy03ioqWw/D1RLjOVb063aJ21ow3rGeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ch3Ac/btqy03ioqWw/D1RLjOVb063aJ21ow3rGeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ch3Ac/btqy03ioqWw/D1RLjOVb063aJ21ow3rGeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCh3Ac%2Fbtqy03ioqWw%2FD1RLjOVb063aJ21ow3rGeK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;켜자마자 비밀번호를 입력하는 부분이 나오며, 설치시 진행했던 root의 비밀번호를 입력합니다.&lt;/p&gt;
&lt;p&gt;위와 같은 화면이 보인다면 정상적으로 설치가 완료되었습니다.&lt;/p&gt;</description>
      <category>개발환경/windows 웹개발</category>
      <category>Database</category>
      <category>MariaDB</category>
      <category>MySQL</category>
      <category>Windows</category>
      <category>설치</category>
      <author>Noob_Nim</author>
      <guid isPermaLink="true">https://noobnim.tistory.com/47</guid>
      <comments>https://noobnim.tistory.com/47#entry47comment</comments>
      <pubDate>Sat, 12 Oct 2019 19:57:27 +0900</pubDate>
    </item>
  </channel>
</rss>