Server
-
[SpringBoot] SpringBoot 되새기기 프로젝트 4일차 (2020/05/14)Server/SpringBoot 2020. 5. 14. 18:34
영속성 컨텍스트 - 엔티티를 영구 저장하는 환경 -> JPA의 영속성 컨텍스트 덕분에 update 기능에 쿼리를 날리는 부분이 보이지 않아도 구동 가능 -> JPA의 핵심 내용은 엔티티가 영속성 컨텍스트에 포함되어 있는가 아닌가 -> JPA의 EntityManager가 활성화된 상태로 트랜잭션 안에서 DB에서 데이터를 가져오면 이 데이터는 영속성 컨텍스트가 유지된 상태(기본 SpringBoot 상태) -> 이 상태에서 해당 데이터 값 변경시 트랜잭션이 끝나는 시점에 해당 테이블에 변경분 반영, ->-> 더티 체킹(dirty cheking) == Entity 객체의 값만 변경시 별도로 Update 쿼리를 날릴 필요가 X MyBatis, iBatis에서 JPA로 옮겨감으로써 좀 더 객체지향적으로 코딩 가능 ..
-
[SpringBoot] SpringBoot 되새기기 프로젝트 3일차 (2020/05/13)Server/SpringBoot 2020. 5. 13. 15:34
- 롬복은 코드를 단순화시켜 주지만 필수 어노테이션은 아님 - JPA를 사용할 때 DB 데이터 작업 경우 실제 쿼리날리기 보다 Entity 클래스의 수정을 통해 작업 이루어짐 JPA에서 제공하는 어노테이션 몇 가지 -> @Entity - 테이블과 링크될 클래스, 기본값으로 클래스의 카멜케이스 이름을 (_)으로 테이블 이름 매칭 -> @Id - 테이블의 PK, Spring Boot 2.0에서는 GenerationType.IDENTITY 옵션 추가해야 auto_increment가능 -> @Column - 선언하지 않아도 클래스의 필드는 모두 컬럼이 됨 but 사용하는 이유는 기본값 외 추가 옵션있을 때 사용 롬복 라이브러리 -> @NoArgsConstructor - 기본 생성자 자동 추가, public Po..
-
[SpringBoot] SpringBoot 되새기기 프로젝트 2일차 (2020/05/12)Server/SpringBoot 2020. 5. 12. 23:37
- 롬복 테스트 - dto -> 모든 응답을 정리하는 패키지 - param -> API 테스트할 떄 사용될 요청 파라미터 설정 - String만 허용 - jsonPath -> JSON 응답값을 필드별로 검증할 수 있는 메소드 - $를 기준으로 필드명을 명시 - $.name $.amount 이런식*/ JPA -> 자바 표준 ORM(Object Relational Mapping) * iBatis, MyBatis는 ORM이 아니라 SQL Mapper, ORM은 객체를 매핑, * SQL Mapper는 쿼리를 매핑 RDBMS가 웹 서비스의 중심이 되면서 모든 코드의 SQL 중심화 -> 애플리케이션 코드보다 SQL이 많아짐 가장 큰 문제는 RDBMS와 객체지향 언어의 패러다임 불일치 객체지향 언어? 기능과 속성을 ..
-
[SpringBoot] SpringBoot 되새기기 프로젝트 1일차 (2020/05/11)Server/SpringBoot 2020. 5. 12. 16:12
TDD -> 테스트 주도개발 단위 테스트 -> 기능 단위의 테스트 코드 작성, 리팩토링 포함X, 순수하게 테스트 코드만 작성 테스트 코드 작성이유? -> 개발단계 초기에 문제 발견 도움 -> 개발후에 코드 리팩토링 또는 라이브러리 업그레이드 등에서 기존 기능 올바르게 작동하는지 확인 -> 기능 불확실성 감소 롬복 -> Getter, Setter, 기본생성자, toString등을 어노테이션으로 자동 생성해줌
-
[SpringBoot] MYBATIS MySql LIKE 동적쿼리 에러Server/SpringBoot 2019. 12. 10. 17:55
** 주의 ** MySql myBatis를 사용할 때 동적 쿼리이다. iBatis나 oracle, MSSQL은 쿼리를 다르게 짜주어야한다. 많은 사람들이 이 부분에서 삽질을 했다고 하는데..나 또한 여기서 오랜시간을 들여버렸다...(날렸다고 생각은 안한다...이렇게 배우는 거지......) 모르면 이렇게 무식하게 고생하는 watermelon(수박)에...... 아무튼 거두절미하고 .. 처음에는 동적쿼리에서 LIKE 는 다르게 사용해야 하는지 모르고 일반 쿼리문 처럼 SQL을 짰다가 동작하지 않아서 많은 검색들을 해보았다. 사스가 stackOverflow...에서 발견한 것이 AND 컬럼명 LIKE CONCAT('%',#{동적쿼리값},'%') 바로 이런식으로 넣어 주어야 한다는 것!!!! 그런데 나는 여기..
-
[Spring Boot] jar 파일 배포하는 법Server/SpringBoot 2019. 11. 19. 15:44
이제 만들었던 Spring Boot 파일들을 .jar 파일로 배포해보자. .jar 파일은 만들어놓은 클래스들은 하나로 묶어주는 파일이다. 일단 Spring Boot를 실행하는 Application 파일로 가서 Build를 해보자. 형광펜과 밑줄이 동시에 되어있는 build를 더블클릭!! 이런식으로 에러가 있는지 없는지 확인이 가능하다. 에러가 없다면 이제 build된 파일이 있는 경로를 찾아가보자. 일단 .jar를 실행시켜보기 전, main 클래스의 파일들을 먼저 확인해보자. 본인의 workspace 패키지 경로로 들어가서 확인하면된다. 나같은 경우에는 파일명 위에처럼 경로가 되어있다. 만약 초기상태라면 위처럼 두 가지 파일이 들어있는 것이 아니라 나의 경우에는 RestMapper.class, 즉 cla..
-
[Spring Boot] SVN 설치 및 사용법Server/SpringBoot 2019. 11. 19. 11:31
오늘은 SVN에 대해서 알아보자 SVN은 형상관리/소스관리 툴이다. git과 다른점은 git은 모두가 볼 수 있지만, SVN은 url과 id, pw가 필요하므로 팀 프로젝트에서 팀원, 즉 권한을 가진 사람들 끼리만 소스관리가 가능하다. 이클립스 상단 툴바에서 [Help]-[Eclipse Marketplace]로 들어간다. Find에서 [SVN] 검색후 나같은 경우에는 스크롤을 좀 내려보면 있는 Subclipse 4.3.0 으로 install했다!! 이제 이후에는 쫙쫙 설치를 해주면된다. 설치가 다 되었다면 실행순서를 한번 보자. 본인이 원하는 프로젝트위에 마우스 우클릭 후 , [Team]->[Share Projects]를 클릭하자 이미 저장해놓은 SVN 경로가 있고, 그 경로를 사용하려면 밑에 Use e..
-
[SpringBoot] Lombok 사용 및 적용 방법Server/SpringBoot 2019. 11. 18. 15:48
Lombok 라이브러리는 자바 개발을 getter와 setter, 혹은 toString 메소드를 만들일이 생긴다. 위에 getter, setter, toString은 주로 변수가 쉽게 값에 접근하지 못하게 하기위해 private으로 선언되어 있을 때 사용하는 메소드들이다. 하지만 변수가 많아지면 get, set으로 인해 코드가 길어지고 지저분하게 보일 수 밖에 없다. 이럴 때 코드를 다이어트 해주는 것이 Lombok 라이브러리이다. 즉 코드를 짧게 줄여줄 수 있다. 아래 코드를 보자! 변수는 private으로 생성되어 있고, get, set은 public으로 선언되어 있다. 따라서 다른 클래스에서 SearchVO에 있는 startDate나 endDate에 접근하고 싶으면 getStartDate(), ge..