AWS EC2에 인스턴스를 등록. 자바를 설치한 다음에 스프링 부트로 만든 웹을 배포, 켜두고 있었다. 그런데 진짜 우연히 콘솔(푸티) 창을 켜놓고 있던 중에 이상한 로그가 하나 떡 찍힌 것을 확인했다.. 위 코드에 담긴 IP주소는 겉으로 보기에는 멀쩡해 보이는데, https://www.abuseipdb.com/check/150.136.111.68 150.136.111.68 | Oracle Public Cloud | AbuseIPDB Check an IP Address, Domain Name, or Subnet e.g. 210.220.70.1, microsoft.com, or 5.188.10.0/24 www.abuseipdb.com 여기를 통해 확인해보면 해커들이 멀쩡한 기업의 IP를 위장해서 접근하는 ..
에러: org.springframework.dao.DataIntegrityViolationException 언제: AWS EC2에서 git pull 한 이후 ./gradlew build를 통해 빌드 중에 발생 이상한 점: 로컬 PC에서 빌드할 때는 이런 에러가 전혀 없었는데 EC2에서 빌드할 때만 발생함 원인: 테스트 데이터가 이미 DB에 저장되어있는 데이터랑 겹쳐서 발생하는 에러였음. 에러가 발생한 관리자 수정에 대한 테스트 코드인데 왜 에러가 발생하지 싶었던 순간.. 혹시나 해서 DB를 보니 똑같은 데이터가 저장되어있던 것이였다...!!! 그래서 로그인 아이디랑 전화번호의 유니크 제약조건 때문에 데이터가 제대로 추가되지 않고 에러를 냈던 것 같다. 저 데이터를 날리고 다시 빌드를 해보니 정상적으로 빌..
본 게시글은 책을 읽고 공부를 위해 기록해둔 게시글입니다. + 자바 ORM 표준 JPA 프로그래밍 강의 참고 --- 도메인 객체에는 엔티티와 값 객체가 있다 -> 도매인 객체를 중심으로 한 개발이 바로 도메인 주도 설계! 도메인 객체를 사용함으로써 1. 자기 서술적인 코드 작성 가능 2. 도메인에 변경사항 발생 시 유연한 대처 가능 의 이점을 얻을 수 있다. # JPA에서의 데이터 타입: 엔티티 타입과 값 타입 엔티티 타입: @Entity로 정의된 객체. 식별자를 이용한 추적 값 타입: int, String 등 자바 기본 타입 및 객체. 식별자가 존재하지 않음. -> 식별자가 존재하지 않으므로 값 변경 시 완전 다른 값으로 대체된다. # 언제 엔티티를 쓰고 언제 값 객체를 쓰나? - 상황에 따라 케바케 ..
본 게시글은 책을 읽고 공부를 위해 기록해둔 게시글입니다. --- 도메인 주도 설계란 무엇인가? - 소프트웨어를 만들기 위해서는 소프트웨어 이용자가 처한 문제점을 인식하고, 이를 해결할 수 있는 최선의 수단을 고려하는 과정이 필요하다 - 도메인 주도 설계는 이러한 고찰을 반복하는 설계를 통해 이용자의 세계와 소프트웨어 구현을 연결짓는 것이 목적. - 도메인 지식에 초점을 맞춘 설계 기법이다. 도메인이란? - 프로그램이 쓰이는 대상 분야, 영역 (ex) 회계 시스템 도메인에 속하는 개념 - 금전, 장부 물류 시스템 도메인에 속하는 개념 - 창고, 화물, 운송수단 소프트웨어의 목적은 도메인에서 이용자들이 직면한 문제점들을 해결하는데에 있다. -> 따라서 개발자는 이용자들이 처한 환경을 제대로 이해해야한다. ..
# 이 게시글은 김영한님의 인프런-자바 ORM 표준 JPA 프로그래밍 강의를 많이 참고했습니다 # JPQL 객체지향 쿼리 언어 - 엔티티 객체를 대상으로 쿼리를 날린다 - SQL을 추상화한 것으로, 설정된 방언(Dialect)에 따라 SQL로 변환되어 나간다. - 특정 벤더(오라클, MySQL 등..)에 종속되지 않는다는 이점 존재 [JPQL 문법] 1. 엔티티와 속성은 대소문자를 구분한다 2. JPQL 키워드는 대소문자를 구분하지 않는다(Select, select, WHERE, where...) 3. 테이블 대상으로 쿼리를 날리는게 아니다. 엔티티 이름을 사용한다. 4. 엔티티 객체의 별칭을 필수로 붙여야한다 (Member (as) m) [파라미터 바인딩] (위치(순서) 기반 파라미터 바인딩도 있는데 ..
# 이 게시글은 김영한님의 인프런-자바 ORM 표준 JPA 프로그래밍 강의를 많이 참고했습니다 # 프록시 DB 조회를 나중으로 미루는 가짜 객체. * 실제 클래스를 상속받아서 생성. 겉 모양이 같다 -> 사용하는 입장에서는 얘가 진짜 객체인지 프록시 객체인지 모르고 사용해도 된다(이론상 그렇다) * em.getReference() 메소드로 프록시 객체 조회가능 em.find() = 실제 엔티티 객체 * 프록시 객체는 실제 객체의 참조를 보관. 프록시 객체를 호출하면 프록시 객체가 실제 객체의 메소드 호출. * 프록시 객체는 처음 사용할 때 한번만 초기화한다 * 프록시 객체를 초기화 하는 것이 프록시 객체가 실제 객체로 바뀌는 것이 아니다. (프록시 객체를 통해서 실제 엔티티에 접근이 가능해지는 것) * ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.