반응형 전체 글219 annotation 메모 @RequiredArgsConstructor : 선언된 모든 final 필드가 포함된 생성자를 생성해 줍니다.final이 없는 필드는 생성자에 포함되지 않습니다. @Entity : JPA 의 어노테이션 / 테이블과 링크될 클래스임 기본값으로 카멜케이스 이름을 언더스코어 네이밍으로 테이블 이름과 매칭 SalesManager.java => sales_manager table @Id : 해당 필드의 PK 값 @GeneratedValue : PK 생성규칙 2.0 부터는 붙여줘야 오토 인크리먼트가 동작 @Coulmn : 굳이 붙이지 않아도 해당클래스 필드는 모두 컬럼이다. 사용하는 이유는 기본값 외에 옵션 변경이 필요한 경우 varchar 500 또는 type 을 text 로 변경하고 싶은 경우 @Coulmn(c.. 백앤드 이야기/JAVA&Spring 2020. 7. 4. Junit5 메모 @WebMvcTest : 선언할 경우 @Controller, @ControllerAdvice 등 사용가능단 Controller 에서만 사용가능단 이 어노테이션 사용 경우 JPA 동작 안함 @Autowired private MockMvc mvc; : 웹 API를 테스트 할 때 사용, 스프링 MVC 테스트의 시작점 이 클래스를 통해 http 메소드 API 테스트 가능 mvc.perform(get("hello")) : MockMvc를 통해 /hello 주소로 요청, 체이닝 지원 .andExpect(statuc().isOk()) : mvc.perform 의 결과를 검증 HTTP header의 Status 의 200을 검증한다 .andExpect(content().string(hello)) : mvc.perfor.. 백앤드 이야기/JAVA&Spring 2020. 7. 4. [JAVA] 자바8 부터 지원하는 java.time 패키지 util 모음 자주 쓰는 몇몇 소스들을 내 소스로 만들기로 마음먹은지 몇 달 만에 겨우 작업하습니다 ㅠㅠ 육아로 지친 저녁.. 매번 소스&레퍼런스 찾아서 복붙하려니 귀찮기도 하고 또.. 귀찮아서.. 이제 겨우 하나 드디어 완료..! 자바8 버전 부터 지원하는 java.time 패키지의 LocalDate 와 LocalDateTime 들의 기능을 모아서 처리 해놓았습니다. 유용하게 사용하시고 지적은 언제나 환영입니다. 자세한 설명은 javadoc 을 달아두었습니다. 티스에도 소스를 편하게 볼 수 있도록 플러그인 작업을 해야겠습니다 ㅠㅠ package com.heeseong.util.util; import java.time.LocalDate; import java.time.LocalDateTime; import java.t.. 백앤드 이야기/JAVA&Spring 2020. 7. 4. [JAVA] 파일 & 폴더 정보 확인, 이동, 생성, 삭제등 import java.io.*;//입출력 class Ex113_File { public static void main(String[] args) { //Ex113_File.java //m1();//파일 정보 확인 //m2();//상대경로, 절대경로 확인 //m3();//파일 변경,이동 //m4();//파일명 바꾸기 //m5();//파일 삭제 //m6();//폴더 정보 확인 //m7();//폴더 생성 //m8();//폴더 삭제 m9();//폴더 변경,이동 }//end main //특정 파일에 접근 -> 정보 public static void m1() { //물리적인 파일을 프로그램상에서 접근할 매개체 생성 //실제 파일 참조 File file = new File("D:\\Test.java");//절대경로 .. 백앤드 이야기/JAVA&Spring 2020. 6. 19. [Intellij] Gradle 버그??? 인텔리제이 최신버전을 설치했다.(커뮤니티 X) 그래들 추가 하는데 계속 같은 오류 반복 클래스 패스를 찾을 수 없다 !! 아티팩츠를 다시 설정해라등의 문구가 계속 나오는데 아무리 검색을 해서 조치하고 그래도 계속 같은 오류만 반복.. jee project import errors IDE/Intellij 2020. 6. 10. [Thymeleaf] Thymeleaf 기본문법 출처 : https://eblo.tistory.com/551. Thymeleaf 기본 표현자세한 문법은 Thymeleaf 사이트의 튜토리얼을 참고하는게 좋습니다. 기본 표현, 조건문, 반복문세가지를 중점으로 보겠습니다. Thymeleaf Document 참고 (https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax)Simple expressions:Variable Expressions: ${...}Selection Variable Expressions: *{...}Message Expressions: #{...}Link URL Expressions: @{...}Fragment Expressions:.. 프론트앤드 이야기/Thymeleaf 2020. 4. 14. [MySQL] 커버링 인덱스 커버링 인덱스란?커버링 인덱스란 원하는 데이터를 인덱스에서만 추출할 수 있는 인덱스를 의미합니다. B-Tree 스캔만으로 원하는 데이터를 가져올 수 있으며, 칼럼을 읽기 위해 굳이 데이터 블록을 보지 않아도 됩니다.인덱스는 행 전체 크기보다 훨씬 작으며, 인덱스 값에 따라 정렬이 되기 때문에 Sequential Read 접근할 수 있기 때문에, 커버링 인덱스를 사용하면 결과적으로 쿼리 성능을 비약적으로 올릴 수 있습니다.백문이 불여일견! 아래 테스트를 보시죠.테이블 생성먼저 다음과 같이 테이블을 생성합니다.create table usertest ( userno int(11) not null auto_increment, userid varchar(20) not null default '', nickname.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 차집합 이 점을 이용해서 LEFT OUTER JOIN으로 차집합을 구현할 수 있다. 오라클이나 MSSQL과 같은 경우는 EXCEPT 혹은 MINUS 등을 사용하면 되겠지만, MySQL은 버전에 따라 지원하는 경우도 있고 아닌 경우도 있다.test1 테이블의 데이터 중 test2 테이블에 있는 데이터를 제외하고 가져오고 싶다. 위의 테이블에서 JOIN하는 column을 기준으로 1, 2는 test2 테이블에도 있으니 제외하고, 3 | 6만을 가져오고 싶은 경우이다.SELECT * FROM test1 a LEFT JOIN test2 b ON (a.aa = b.aa) WHERE b.aa IS NULL; 3 | 6 | null | null test2.aa에 있는 1, 2의 데이터를 제외한 데이터를 test1.aa에서 .. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 인덱스 생성 조건 MySQL 인덱스에 관해 정리를 하였습니다. MySQL을 잘 알아서 정리를 한것이 아니라, 잘 알고 싶어서 정리한 것이라 오류가 있을수도 있습니다.1. 인덱스란?인덱스 == 정렬인덱스는 결국 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것입니다. insert, update, delete (Command)의 성능을 희생하고 대신 select (Query)의 성능을 향상시킵니다. 여기서 주의하실 것은 update, delete 행위가 느린것이지, update, delete를 하기 위해 해당 데이터를 조회하는것은 인덱스가 있으면 빠르게 조회가 됩니다. 인덱스가 없는 컬럼을 조건으로 update, delete를 하게 되면 굉장히 느려 많은 양의 데이터를 삭제 해야하는 상황에선 인덱스로 지정된 .. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 실행계획 본문 바로가기DBMS의 쿼리 실행에 같은 결과를 만들어 내는 데 한가지 방법만 있는 것은 아닙니다. 아주 많은 방법이 있지만 그중에서 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 합니다. DBMS에서는 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요합니다. DBMS에서는 옵티마이저가 이러한 기능을 담당합니다.MySQL에서는 EXPLAIN이라는 명령으로 쿼리의 실행 계획을 확인할 수 있으며, 여기에는 많은 정보가 출력됩니다. 실행 계획에 표시되는 내용이 무엇을 의미하고 MySQL 서버가 내부적으로 어떤 작업을 하는지 자세히 살펴보겠습니다. 그리고 어떤 실행 계획이 좋고 나쁜지.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] MySQL 쓰면서 하지 말아야 할 것 17가지 *MySQL 쓰면서 하지 말아야 할 것 17가지*권장사항이다. 이것을 이해하면 당신의 어플리케이션이 더 나은 성능을 발휘할 것이다.다만 이것이 사람의 실력을 판단하는 척도로 사용되서는 안 될 것이다. 작게 생각하기- 조만간 규모가 커질거라면 MySQL ecosystem을 봐야된다. - 그리고 캐싱 빡시게 안 하는 메이저 웹사이트는 없다. - develooper.com의 Hansen PT랑 Ilia 튜토리얼 볼 것 - 처음부터 확장 가능하게 아키텍처 잘 쪼개놔야된다. - 복제랑 파티셔닝 어떻게 할지 미리 계획 세워놔라. - 파일 기반 세션 좀 쓰지마 -_- - 그렇다고 너무 쓸데없이 크게 생각하지도 말 것 - 특히 성능하고 확장성 구분 못 하면 난감함 EXPLAIN 안 써보기- SELECT 앞에 EXPLA.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] MySQL 중복 키 관리 방법 (INSERT 시 중복 키 관리 방법 (INSERT IGNORE, REPLACE INTO, ON DUPLICATE UPDATE) 안내본 문서는 블로그의 운영자인 본인이 Stackoverflow에 올린 답변을 정리한 글입니다.Stackoverflow URLhttp://stackoverflow.com/questions/20342518/on-duplicate-key-update-value-inserting-same-values-twice/20342598질문다음과 같이 INSERT 구문을 사용 중이다.INSERT INTO person VALUES(NULL, 15, 'James', 'Barkely') ON DUPLICATE KEY UPDATE academy_id = VALUES(academy_id); 중복된 값을 여러 번 INSERT한 뒤에 SELECT를 해 보면 중복된 값이 저장되어 있다.mysql> SELECT * FROM person.. 데이터베이스 이야기/MySQL 2020. 4. 10. 이전 1 ··· 7 8 9 10 11 12 13 ··· 19 다음 💲 추천 글 반응형