Just do IT
article thumbnail
Published 2021. 6. 14. 20:18
JPA 실습하기 (3) Programing/JPA

 

pom.xml 작성하기

 

프로젝트 생성 직후의 pom.xml 파일의 내용입니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	
	<groupId>com.example</groupId>
	<artifactId>practice</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	
	<name>bootrestpractice</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<java.version>1.8</java.version>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

 

이 pom.xml에 spring-boot-devtools 추가해주세요.

아래 dependency를 복사해서 사용하셔도 됩니다.

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>

 

application.properties 작성하기

프로젝트 생성 직후에는 application.properties는 빈 파일 입니다.

이 application.properties에 아래와 같이 작성해주시면 됩니다.

spring.datasource.url=jdbc:mysql://localhost:3306/bootrest?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=15

spring.jpa.hibernate.ddl-auto=create
#create, update, delete 등 sql 쿼리 옵션 선택

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
#MairaDB다이얼렉트로 테이블 생성 시 에러나니까 바꿔달라고 하는 것
spring.jpa.properties.hibernate.id.new_generator_mappings=false
spring.jpa.properties.hibernate.format_sql=true

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

 

 

localhost - 호스트 IP (호스트 서버의 IP를 작성해주면 됩니다)

3360 - MySQL이 사용하는 포트 번호입니다

bootrest?createDatabaseIfNotExist=true - 프로젝트 생성 시 테이블이 없다면 생성해 달라는 표현

 

username - db 유저 아이디

password - db 유저 비밀번호

 

tomcat.max-wait - 새로운 연결을 얻기 위해 대기하는 시간(msec), 최대 시간에 도달하게 되면 exception이 발생하며 default는 -1로 무제한이다

tomcat.max-active - 동시 사용 가능한 연결의 최대 수로 0일 경우 무제한이다 (기본값:8)

tomcat.max-idle - 커넥션 풀에 반납할 때 최대로 유지될 수 있는 커넥션 개수 (기본값:8)

tomcat.min-idle - 최소한으로 유지할 커넥션 개수 (기본값:0), max-active를 넘을 수 없다, -1일 경우 무제한이다 (기본값:0)

 

spring.jpa.hibernate.ddl-auto - 프로젝트가 실행 될 때마다 뒤에 작성된 키워드에 해당하는 쿼리문을 실행하게 된다

     create - 응용프로그렘이 실행될 때마다 db 테이블을 drop하고 생성한다
     update - 변경된 스키마만 데이터베이스에 적용한다

     validate - 변경된 스키마가 있는지 확인만 하고 변경이 있다면 어플리케이션을 종료한다

     create-drop - 프로젝트, 어플리케이션 시작과 종료에서 모두 테이블을 drop 한다

     none - 데이터베이스에 아무런 변화도 없다

 

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect

     - Hibernate는 내부적으로 지정되는 DB에 맞게 SQL문을 생성하는 Dialect가 존재합니다.

     - 위 명령은 SQL문을 MariaDB에 맞는 SQL문을 생성해 달라고 설정하는 것 입니다.

 

spring.jpa.properties.hibernate.id.new_generator_mappings

     - Hibernate Primary Key(ID) Generator로 JPA에 부합하는 방식으로 DB의 ID생성

     - true 면 sequence 시도, 혹은 table로 시도

 

spring.jpa.properties.hibernate.format_sql

     - 사용되는 쿼리문을 보여줄지 결정

     - spring.jpa.show_sql 도 동일한 기능

     - format_sql을 사용할 경우 SQL을 보여줄 때 줄바꿈을 넣어서 예쁘게 보여준다

     - true(쿼리문을 보여주세요), false(쿼리문을 출력X)

     - true로 설정하면 1줄 짜리 질의문도 같이 보여지게 된다

 

logging.level.org.hibernate.SQL

     - spring.jpa.properties.hibernate.format_sql을 true로 설정하여 나오는

       1줄짜리 질의문을 제어하기 위한 설정입니다.

     - DEBUG로 설정을 하면 1줄 짜리 질의문이 안나오고 여러줄로 표시된 질의문만 나오게 해줍니다

 

logging.level.org.hibernate.type.descriptor.sql.BasicBinder

     - prepared statement문 형태의 질의문에 들어가는 파라미터를 보기 위한 설정입니다.

     - TRACE로 설정할 경우 로그 형태로 출력이 되며 질의문에 들어가는 파라미터도 볼 수 있습니다

     - DEBUG로 설정할 경우 파라미터 로그를 볼 수 없습니다

 

pom.xml, application.properties의 작성을 완료하시면 톰캣을 추가해주세요~!

 

톰캣 추가하기

프로젝트 파일 우클릭 -> Build Path -> Configure Build Path

 

우측에 Add Library 클릭 -> ServerRuntime -> Next(다음)

 

본인의 프로젝트에 맞는 Apache Tomcat 버전을 클릭후 Finish ->

Java Build Path에 Apache Tomcat 라이브러리가 추가되어 있는 모습을 볼 수 있습니다

-> Apply and Close

 

프로젝트에 Apache Tomcat 라이브러리가 추가되어 있으면 완료입니다

 

다음 포스팅 부터는 model, repository, service, exceptoin, controller를 순서대로 생성하고 실행을 시켜보겠습니다

   다음으로 고고~ -> https://amy-ming.tistory.com/15

'Programing > JPA' 카테고리의 다른 글

JPA 실습하기 (5)  (0) 2021.06.16
JPA 실습하기 (4)  (0) 2021.06.15
JPA 실습하기 (2)  (0) 2021.06.14
JPA 실습하기 (1)  (0) 2021.06.14
JPA  (0) 2021.06.14
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!