반응형

전체 글 297

Spring JPA 쿼리메소드

메소드 이름 안에서 지원되는 키워드 출처:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation Spring에서 JPA가 지원해주는 쿼리 메소드는 아래와 같이 사용한다. interface상에서 이름으로만 정의해주면 메소드가 알아서 쿼리를 생성하여 활용 할 수 있다. * Intellij Ultimate버전에서만 위 기능 자동완성을 지원해준다. KeywordSampleJPQL snippet Distinct findDistinctByLastnameAndFirstname select distinct …​ where x.lastname = ?1 and x.firstname = ?2 And ..

Spring 공통속성 JPA Auditing, EntityListener, MappedSupperclass

MappedSuperclass : 공통된 속성 표현하기 위해서 사용 ex) Id, 생성일자, 수정일자 JPA Auditing : 엔티티 별로 누가, 언제 접근했는지 기록하여 감시체계를 꾸리는것. -> Spring Data JPA에서 이 기능 사용하기 위해서는 @EnableJpaAuditing 사용 @CretatedDate : 생성 시점 자동 주입 @CreatedBy : 생성 주체 @LastModifiedDate : 수정 시점 자동 주입 @LastModifiedBy : 수정 주체 +) @EntityListener : 엔티티 객체를 데이터베이스에 적용하기 전/후에 콜백 요청

[JAVA] 백준 끝나지 않는 파티(플로이드워셜)

플로이드 워셜 문제로 풀어야 시간초과가 나지 않는 문제이다. 단뱡향 노드로 모든 길에 대한 값이 들어가있는 문제에서 사용! 시행착오 1. BFS로 각각의 케이스에 대해서 따로 최단거리를 구하려했다 => 파티장의 크기 N(5 ≤ N ≤ 500) , 파티장의 번호, C(1 ≤ C ≤ 1,000,000,000) 이므로 BruteForce(N * N = 2500)로 한번에 모든 거리를 구해놓아야 한다는 것을 깨달았다. 2. 완전탐색(Brute-Force)으로 모든것을 탐색할때 BFS방식으로 탐색했다. => 이미 진행한 길에 대해서 추가적인 낭비 노드가 발생한다. 따라서 플로이드 워셜로 순차적으로 업데이트 해나가는 삼중for문 방식이 더 효율적인 것을 알 수 있었다. import java.io.*; import ..

스프링MVC패턴 Controller / Model(DAO,DTO,Service) / View

단, DTO(=VO)로 혼용해서 많이 사용한다. 상세 비교 : 2022.02.13 - [웹(Web)/백엔드(Backend)] - DTO vs VO 비교 (+Entity) 코드 동작은 아래와 같다. 요약방식으로 적겠다. 상세 내용은 따로 검색해보면서 공부하는 것이 맞는듯하다. 1. Controller(컨트롤러) : 클라이언트 요청 받아서 객체지향방식으로 가공해서 Service에 던져줌 2. Service(서비스) : 적절한 Service에 전달받음 Service : DAO를 묶어 합친 것 -> DAO(Data Access Object)로 DB에 접근 DAO => @Repository DAO는 DB를 사용해 데이터 조회/조작하는 기능 역할을 하는 객체 DAO 사용 이유 : 커넥션 관리 및 보안성 Q1. in..

DTO vs VO 비교 (+Entity)

先 요약 DTO VO Entity 용도 레이어 간 데이터 전달 값 자체 표현 DB 테이블과 매핑되는 클래스 동등 결정 속성값이 모두 같다고 해서 같은 객체 X 속성값이 모두 같으면 같은 객체 O 가변/불변 setter - 존재시:가변 / 비존재시:불변 불변 가변 객체 생성 후 상태 변경 O 로직 getter/setter 외의 로직을 갖지 않음 getter/setter외에도 다른 로직을 가질 수 있다. 로직 포함O 출처 : 우아한테크코스 인비 크루( https://www.youtube.com/watch?v=z5fUkck_RZM ) DTO(Data Transfer Oject) : 데이터를 전달하기 위해 사용하는 객체 : 데이터를 담아서 전달하는 '바구니' getter/setter 메서드만을 갖는다! 다른 로..

[JAVA] 백준 수강신청

주의할점 1. 학번은 Integer형이 아닌 String으로 받아야한다. (예를들어 012345678이라는 학번은 Integer형으로 받을시 1234578로 데이터의 변형이 발생한다.) 2. (수강가능인원) > (대기목록의길이) 인 경우를 생각해아한다. ((IndexOutOfBounds) 발생 가능성) 처음 작성한 코드. HashMap을 통해서 중복제거와 동시에 우선순위를 뜻하는 key를 넣어준다.(순서 역할) ArrayList에 위 key를 이용한 Student 객체를 넣어주고 정렬한다. ArrayList에서 필요한 객체를 순서대로 반환한다. import java.io.*; import java.util.*; public class Main { static int k, l; static HashMap ..

[JAVA] 백준 감소하는 수

처음에는 하나씩 증가하면서 수를 순서대로 잘라서 넣어주는 방식으로 진행했다. 하지만, 그런식으로 진행하게되면 최대값이 몇인지 몰랐고, 효율성 측면에서 순열이 더 좋다고 하여 방식을 바꾸었다. 각각의 경우에 대하여 일의자리 수에 따른 경우의 수를 구한다 일의자리수 각각에 대하여 아래와 같은 방식으로 미리 계산한다. 0: 0 1: 1, 10 2 : 2, 20, 21, 210 3 : 3, 30, 31, 32, 310, 320, 321 ... 참고로 가장 큰 숫자는 9876543210 이다. 즉, 열자리 숫자이며 이 경우 2^10 -1 = 1024-1 = 1023개이다. list.size()를 출력해보면 위 결과를 얻을수 있었다. 1023개를 꼭 알아야할 필요는 없다. import java.io.*; impor..

mariaDB 설치오류 해결법(MariaDB 10.4 Setup Wizard ended prematurely because of an error)

설치 에러 메시지 : (MariaDB 10.4 Setup Wizard ended prematurely because of an error) 현상 : 설치 진행중에 갑자기 RollBakc되는 현상 발생 인터넷에 나온 레지스트리 등록을 다 따라해봤는데도 안되어서 방법을 연구해보았다. 그래서 mariaDB 설치 중 관리자 권한 확인을 누른 사람이라면 도움이 될 듯 싶다. 필자는 아래와 같은 방법으로 관리자 권한을 부여한 상태로 설치파일을 실행했다. MariaDB 설치오류 해결법 cmd를 관리자 권한으로 실행한다. cmd에서 mariaDB 설치파일(~~~.msi) 버전을 실행한다. 그러면 바탕화면에서 더블클릭했을때와 똑같이 설치를 진행한다. 원래 관리자 요청을 받아야되는데, 이미 cmd를 관리자 권한으로 실행했..

반응형