전체 글

JPA에서 양방향으로 연결된 엔티티를 json으로 직렬화할 때, 즉, Entity To Json serialize할 때 (보통 controller 단) 순한 참조가 발생할 수 있다. 이를 해결하기 위해 Jackson 라이브러리의 @JsonIgnore 어노테이션이나 @JsonManagedReference & @JsonBackReference 어노테이션을 사용하여 직렬화를 제한할 수 있다. Jackson은 스프링에서 JSON을 다룰 때 사용하는 라이브러리다. spring-boot-stater-web 의존성을 주입하면 Jackson 라이브러리가 자동으로 포함된다. 1. @JsonIgnore 필드 레벨에 적용되어 직렬화 시 포함시키고 싶지 않은 필드에 선언한다. @Entity public class Team {..
· Courses/JPA
본 게시글은 김영한님의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 작성한 글입니다. 1. SQL 중심적인 개발의 문제점 1) 무한 반복, 지루한 코드 객체에 새 필드를 추가하게 될 경우 쿼리문을 전부 수정해야 한다. 예를 들어 Member 클래스와 이와 관련된 쿼리문이 존재한다. 만약에 객체에 tel이라는 필드가 새로 추가된다면 이와 연관된 모든 쿼리문을 수정해야 한다. 2. 패러다임의 불일치 객체 vs 관계형 데이터베이스 보통 객체를 관계형 데이터 베이스에 저장한다. 이 과정에서 객체를 SQL로 변환해야 한다. 즉 SQL Mapper 역할을 개발자가 수행한다. 객체와 관계형 데이터베이스의 차이 1. 상속 SQL을 통해 테이블에 저장하는 과정 객체를 분해한다. INSERT INTO **..
📚 문제 링크: https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 💡 접근법 정렬된 리스트에서 적절한 삽입 위치를 찾아 현재값을 삽입하는 삽입 정렬 알고리즘을 이용하여 구현하였다. 삽입 정렬이란? 이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방법이다. 💻 코드 1) 전체 코드 import sys N = int(sys.stdin.readline()) num_list = list(map(int, sys.stdin.readline().split..
📚 문제 링크: https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 접근법 정렬할 리스트에서 최댓값을 찾은 뒤 현재값과 swap하는 선택 정렬 알고리즘을 이용하여 구현하였다. 선택 정렬이란? 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법이다. 💻 코드 1) 전체 코드 import sys nums = sys.stdin.readline().strip() num_list = [] for n in nums: num_list.append(int(n)) for i, n in enumerate(num_li..
· Etc
최근 Spring boot를 공부하면서 여러 강의를 동시에 공부 중인데, 강의에 따라 사용하는 jdk 버전이 달랐다. 강의를 바꿔 들을 때마다 jdk를 바꿔 적용하는 과정이 번거로워서 좀 더 간편하게 버전을 변경하여 사용할 수 있는 방법을 찾아봤다. 1. .zshrc에 아래 명령어 추가 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:$JAVA_HOME" alias setJava8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)' alias setJava11='export JAVA_HOME=..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. AOP가 필요한 상황 1) AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 2) MemberService에 시간 측정하는 로직 추가 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import org.springframe..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. H2 데이터베이스 설치 1) 실행 H2 Database Engine 설치 다운받은 파일의 압축을 풀고 /h2/bin/으로 이동 h2.sh를 실행시키기 위해 권한 부여 chmod 755 h2.sh h2.sh 실행 ./h2.sh 2) DB 접속 최초 DB 접속 JDBC URL: jdbc:h2:~/test ~/test.mv.db 파일 생성 확인 이후 DB 접속 JDBC URL: jdbc:h2:tcp://localhost/~/test 3) Member 테이블 생성 1. SQL문을 사용하여, 이전의 회원관리 예제에서 사용되던 Member 테이블을 생성한다. create table ..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. 회원 웹 기능 - 홈 화면 추가 1. HomeController 파일 생성 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 2. resources/templates/home.html ..
jyjyjy25
기록하는 습관