woong's

Spring Tutorial H2 설정 , Hibernate , Dao 작성 및 Junit test 사용하기 02 본문

Develop/Server

Spring Tutorial H2 설정 , Hibernate , Dao 작성 및 Junit test 사용하기 02

dlsdnd345 2016. 4. 28. 22:10
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Spring Tutorial H2 설정 , Hibernate , Dao 작성 및 Junit test 사용하기 02


첫번째 포스트를 통해서 프로젝트를 생성하고 간단하게 프로젝트의 구성을 알아보았습니다.

두번째 포스트를 통해서 서버의 데이터를 작성하는 부분을 구성해보려 합니다.


서버의 데이터를 구성하기 위해서 DB 가 필요 합니다.


DB 구성을 위해 필자는 H2, Hibernate 를 사용해 보려합니다.


프로젝트에서 H2 , Hibernate 를 설정 하기 위해서 Application.properties 를  작성해야 합니다.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//DB 연결
spring.datasource.url=jdbc:h2:file:~/bookDB 
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=
spring.datasource.password=
 
//H2 설정
spring.h2.console.path=/h2console
spring.h2.console.enabled=true
 
//hibernate 설정
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
 
 
cs


필자는 위와 같이 설정 했습니다.


1. DB 연결

 - url :  DB 연결 작업을 합니다. 필자는 h2:file 을 사용하여 로컬의 루트의 DB 파일을 이용한다고 설정 했습니다.

- driver-class-name : h2 driver 를 연결

- username : DB name 설정

- password : DB password 설정


2. H2 설정

 - enabled : 디폴트 false 이기때문에 true 를 통해서 활성화를 해야합니다.

 - path : 브라우져를 통해서 DB 관리 페이지 path 설정


3. hibernate 설정

 - ddl-auto : 서버 시작시 DB Table 상태 설정 (create drop 을 설정하면 서버 재시작시 데이터가 사라짐.)



위와 같이 설정하고 스프링 프로젝트를 실행해보겠습니다.







톰캣 서버가 실행이 되고 서버가 실행되었다는 로그가 나타납니다. 위와같이 실행이 되면 DB에 접근이 가능합니다.


http://localhost:8080/[path]

http://localhost:8080/h2console






위와 같이 DB 설치 없이 툴을 통해서 DB를 접근 할수 있습니다. 여기까지 잘나타나면 설정은 잘된것입니다.

현재 DB의 테이블이 없지만 , Entity 작성을 통해서 자동으로 생기게 됩니다.


이제 서버의 데이터를 담을수 있는 Entity를 작성해 보도록 하겠습니다.

hibernate Entity 를 작성해 보았습니다. hibernate는 따로 Search를 통해 학습니다 필요합니다.

간단히 설명하도록 하겠습니다.


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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
@Entity
public class Book {
 
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    
    @Column(name = "pageNember")
    private int pageNember;
    
    @Column(name = "author")
    private String author;
    
    @Column(name = "name")
    private String name;
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public int getPageNember() {
        return pageNember;
    }
 
    public void setPageNember(int pageNember) {
        this.pageNember = pageNember;
    }
 
    public String getAuthor() {
        return author;
    }
 
    public void setAuthor(String author) {
        this.author = author;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    
}
 
cs


@Entity 어노테이션을 통해서 Entity를 명시 

@Id 어노테이션을 통해 index 지정

@GenerateValue 어노테이션을 통해 index 자동으로 추가

@Column DB Table Column 매칭


위와 같이 작성후에 스프링 프로젝트를 재 시작 합니다. 

재시작후에 h2 DB를 확인해보면 테이블이 생성된것을 확인 할수 있습니다.





이제 테이블을 조회 하는 기능을 구현해야 합니다. 위 기능을 구현하기 위해 DAO를 작성해야 합니다.


1
2
3
4
5
6
7
 
import org.springframework.data.jpa.repository.JpaRepository;
 
import com.iw.entity.Book;
 
public interface BookDao extends JpaRepository<Book, Integer> {}
 
cs


DAO 를 작성 하였습니다. JpaRepository 를 통해서 entity 를 대입 시켜 주면 기본 CRUD 는 자동으로 구성해 줍니다.

너무 편리하게 기본 CRUD 를 만들었습니다. 이제 잘만들어 졌는지 테스트만 하면 됩니다.


위 DAO 가 잘작성 되었는지 확인하기 위해서 JunitTest Code 가 필요 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Book01Application.class)
@WebAppConfiguration
public class BookDaoTest {
 
    @Autowired
    private BookDao bookDao;
    
    
    @Test
    public void findAll() {
        
        List<Book> bookList = bookDao.findAll();
        assertThat(bookList.size(), is(0));
    }
 
}
 
cs




DAO Test가 잘동작하는 것을 확인 할수 있습니다.

위코드를 간단히 설명 하면 테스트 코드를 설정 하였고 , 

@Autowired 어노테이션을 통해 Dao 변수에 초기화 작업을 해서 사용할수 있도록 하였습니다.

bookDao 기본 CRUD findAll을 호출해서 테스트 하는 코드입니다.

DB에 데이터가 없기 때문에 사이즈는 0 으로 테스트를 해보았습니다.


Server Spring Tutorial 02

'Develop > Server' 카테고리의 다른 글

Server APNS 기능 구현시 주의점  (1) 2016.05.27
Spring Tutorial 프로젝트 생성하기 01  (0) 2016.04.28
LG-5000P , NAPL-5000 이중 포트 포워딩 하기  (3) 2016.02.13
서버 war 배포  (0) 2016.02.13
Comments