티스토리 뷰
82540. 인텔리제이 스프링부트(spring boot) + 마이바티스(mybatis) + 하이버네이트(JPA) 최소 설정파일들
패스트코드블로그 2020. 5. 27. 09:22
스프링은 DI 부터 시작합니다.
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
plugins {
id 'org.springframework.boot' version '2.3.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'war'
}
group = 'com.lambda'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web-services', version: '2.3.0.RELEASE'
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.6.0'
compile group: 'org.mybatis', name: 'mybatis', version: '3.5.4'
compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.2'
compile group: 'org.jsoup', name: 'jsoup', version: '1.13.1'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.3.0.RELEASE'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
|
cs |
application.yml
설정파일은 application.properties 에서 yml[야믈] 로 변화되는 추세이며, 이 트렌드를 따르지 않으면 설정시 에러가 발생할 가능성이 높습니다. 아래 mariadb 부분은 본인의 DB 설정값으로 대체될 수 있습니다. 다만, 비번 첫글자를 숫자로 작성시 number format exception 이 발생하니 첫 글자는 알파벳 문자로 시작해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
spring:
http:
encoding:
enable:
true
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://127.0.0.1:3306/mariadb
username: mariadb
password: mariadb
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
open-in-view: false
show-sql: true
hibernate:
format_sql: true
ddl-auto: create
logging:
level:
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
server:
port: 5000
servlet:
encoding:
charset: UTF-8
force: true
|
cs |
먼저 mybatis 먼저 시작합니다. 다음은 MybatisConfig.java 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package com.lambda.demo;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration
@MapperScan(basePackages= {"com.lambda.demo.mapper"})
@EnableTransactionManagement
public class MybatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:com/lambda/demo/mappers/*.xml"));
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory ) throws Exception {
final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
return sqlSessionTemplate;
}
}
|
cs |
PlayerMapper.java 일단 만들고 메소드는 비워둡니다. 설정때문에 만듭니다.
1
2
3
4
5
6
7
8
9
|
package com.lambda.demo.mappers;
import org.springframework.stereotype.Repository;
@Repository
public class PlayerMapper {
}
|
cs |
위 PlayerMapper.java 와 대응하는 PlayerMapper.xml 을 만듭니다. 일단 비워둡니다.
1
2
3
4
5
|
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lambda.demo.mappers.PlayerMapper">
</mapper>
|
cs |
JPA 작동을 체크하기 위한 Music.java 를 만듭니다. 이것은 엔티티 클래스입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package com.lambda.web.music;
import lombok.*;
import javax.persistence.*;
@Data
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name="music")
public class Music {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long musicNo;
@Column(length = 4, nullable = false)
private String seq;
@Column(length = 30, nullable = false)
private String title;
@Column(length = 30, nullable = false)
private String artists;
@Column(length = 200, nullable = false)
private String thumbnail;
@Builder
public Music(String seq, String title, String artists,
String thumbnail) {
this.seq = seq;
this.title = title;
this.artists = artists;
this.thumbnail = thumbnail;
}
}
|
cs |
Music.java 와 연동하는 MusicRepository.java 를 만듭니다. 그냥 비워둡니다.
1
2
3
4
5
6
7
8
9
|
package com.lambda.web.music;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MusicRepository extends JpaRepository<Music, Long> {
}
|
cs |
이렇게 설정 후 인텔리제이를 구동합니다.
콘솔에 아래와 같은 부분이 보이고
하이라이트 된 music 테이블이 보이면 성공입니다.
그 다음 주의할 점 한가지 !!!
이미 만들어 지고, 데이터 마이그레이션이 종료된 상태에서 테이블을 지워버리고 다시 만들면
데이터가 모두 삭제됩니다. 잊지 말고 아래와 같이 바꿔야 합니다.
그리고 나서 다시 실행하면 아래처럼 drop table if exists ... 같은 구문이 보이지 않습니다.
끝
'0. 정보통신' 카테고리의 다른 글
82537 트래블 ArticleController.java (0) | 2020.06.02 |
---|---|
81540. 마이바티스 템플릿 (0) | 2020.05.29 |
Mybatis 로 Spring-Boot 와 H2DB 를 연동하기 (0) | 2020.05.24 |
[스프링부트] 인텔리제이에서 프로젝트 생성하기 (0) | 2020.05.24 |
[이클립스] 스프링부트 + jQuery 프로젝트 생성 (0) | 2020.05.24 |
- Total
- Today
- Yesterday
- nodejs
- tensorflow
- JPA
- Algorithm
- AWS
- intellij
- Java
- jQuery
- Git
- springMVC
- ERD
- Django
- database
- Oracle
- FLASK
- COLAB
- Mlearn
- SpringBoot
- JUnit
- terms
- Python
- maven
- KAFKA
- mariadb
- Mongo
- docker
- Eclipse
- SQLAlchemy
- vscode
- React
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |