전체 글129 [JPA] JPA 변경 감지와 병합(merge) 준영속 엔티티란? 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 임의로 만들어낸 엔티티라도 기존 식별자를 가지고 있는 경우(JPA가 식별할 수 있는 id를 가지고 있는 경우)에는 준영속 엔티티라고 말한다. 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 2. 병합(merge) 변경 감지 @Transactional public void update(Item itemParam){ // itemParam : 파라미터로 넘어온 준영속 상태의 엔티티 Item findItem = em.find(Item.class, itemParam.getId()); // 같은 엔티티를 조회한다. findItem.setPrice(itemPrice.getPrice()); // 데이터를 수정한다. } 영속성 컨텍스트에서 .. 2020. 1. 30. [스프링] 프록시 기반 AOP(Aspect Oriented Programming) 정리 AOP (Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. AOP 주요 개념 개념 설명 Aspect 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화 한다. Target Aspect를 적용하는 곳 (클래스, 메소드,...) Advice 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체 JoinPoint Advice가 적용될 위치, 끼어들 수 있는 지점이.. 2020. 1. 25. [스프링] IoC(Inversion of Control), DI(Dependency Injection), Spring Container, Bean 정리 의존성 역전(Inversion of Control) IoC란 Inversion of Control의 약어로, 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성하게 하여 가독성 및 코드의 중복, 유지보수를 편하게 할 수 있게 한다. 의존성 주입(Dependency Injection) DI란 Dependency Injection의 약어로, 번역하면 의존성을 주입한다는 말이다. 말 그대로 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입을 시켜주는 방식이다. 무슨 말인지 모르겠으니 아래의 예시를 통해 알아보자. 일반적으로 의존성에 대한 제어권은 객체 자기 자신이 갖는다. 아래의 코드는 Sample이라는 클래스에서 Apple 객체를 불러오는 예제이다. 의존관계는 간단히 말해 new.. 2020. 1. 25. [DevOps] Spring boot, Travis, AWS EC2, S3, CodeDeploy로 CI/CD 환경 구축 2 지난 글에서는 Travis, S3를 연동하여 S3 버킷에 빌드 된 Jar 파일을 업로드 하는 부분까지 완료했다. 이번 글에서는 CodeDeploy까지 연동하여 자동으로 배포가 되게끔 설정을 해준다. Travis와 AWS S3, CodeDeploy 연동하기 CodeDeploy를 이용하기 전에 배포 대상인 EC2가 CodeDeploy를 연동 받을 수 있게 IAM 역할을 하나 생성해준다. IAM의 사용자와 역할의 차이는? 역할 - AWS 서비스에만 할당할 수 있는 권한 (EC2, CodeDeploy, SQS 등) 사용자 - AWS 서비스 외에 사용할 수 있는 권한 (로컬 PC, IDC 서버 등) 지금 만들 권한은 EC2에서 사용할 것이기 때문에 사용자가 아닌 역할로 처리해준다. 서비스 선택에서는 [AWS 서비.. 2020. 1. 15. [DevOps] Spring boot, Travis, AWS EC2, S3, CodeDeploy로 CI/CD 환경 구축 1 서비스를 운영할 때 배포 환경 구축은 필수 과제 중 하나이다. 여러 개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, master 브랜치가 푸시되면 배포가 자동으로 이루어지는 환경을 구축하지 않으면 실수할 여지가 너무나도 많게 된다. 이번 시간에는 spring boot로 개발된 코드를 github에 푸시하면 자동으로 서버에 배포해주는 환경을 구축할 것이다. Travis CI 연동하기 Travis는 github에서 제공하는 무료 CI 서비스이다. 유사 서비스로는 Jenkins, TeamCity 등이 있다. Travis와 github을 연동하기 위해 우선 https://travis-ci.org에 접속해서 github 계정으로 로그인을 한다. 로그인이 되었다면 좌측 상단에 [계정명 -> Setti.. 2020. 1. 15. [스프링] 오픈 api 사용해서 데이터 가져오기 (네이버 영화 검색 api) 네이버 오픈 api를 사용해서 영화를 검색하는 애플리케이션을 구현해보려고 한다. 오픈 api에 대한 정보를 네이버 오픈 api 검색 > 영화에 있다. 오픈 API 이용 신청 오픈 api를 사용하려면 보통 key가 필요하다. 아무나 막 가져다 쓰는 것을 막기 위해 보통 key를 api 호출 시 header에 넣어서 사용한다. key 발급을 위해 우선 api 이용 신청을 한다. 초록색 버튼의 [오픈 API 이용 신청]을 누르면 애플리케이션 등록 화면이 나오고 본인의 애플리케이션을 등록하면 된다. 등록을 마치면 내 애플리케이션 카테고리에서 Client ID와 Client Secret을 확인할 수 있다. 이 값이 위에서 말한 key 값이다. 코드를 구현하기 전에 Postman으로 테스트를 해보니 정상적으로 반환.. 2020. 1. 14. 이전 1 ··· 17 18 19 20 21 22 다음