본문 바로가기

전체 글

(82)
RS) JPA 어플리케이션 실습 JPA 기본 실습 public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member findMember = em.find(Member.class, 1L); findMember.setName("HelloJPA"); //em.persist(member); tx.commit(); }catch(Exception e){ tx.rollback(); }finally{ em.c..
RS) JPA(Java Persistence API) 자바 진영의 ORM 기술 표준 JPA를 구현하는 대표적인 구현체 하이버네이트, EclipseLink, DataNucleus -> 하이버네이트가 대표적이므로 구현체로 하이버네이트를 쓴다고 생각하자! ORM(Object-relational mapping 객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 중간에서 ORM 프레임워크가 매핑 작업 개발자가 직접 JDBC를 사용하는 것이 아니라 JPA가 중간에서 이 역할을 대신한다. JPA 저장 동작 MemberDAO에서 데이터를 저장할 경우 JPA에게 Member 객체를 넘긴다. JPA가 Member 객체를 분석해서 적절한 INSERT쿼리를 생성 JPA가 JDBC API를 사용하여 DB에 보내고 결과(ResultSet)를 받..
RS) SQL 중심적인 개발의 문제점 데이터베이스의 세계는 현재 아직 RDB(관계형 디비)가 잡고 있다. 즉 객체를 관계형 디비에 저장해서 관리한다. 문제점은 관계형 디비에 저장하다보니 SQL이 중요한 비중을 차지한다. 수정의 경우에도 SQL 수정을 위주로 해야하며, 모든 SQL을 짜야한다. ex) memberId와 name을 통해 쿼리문을 다 짜여진 상태로 개발이 완료가 되었으나, 이후에 전화번호(tel)를 추가해달라는 요청으로 컬럼도 추가해야하고 본질적인 쿼리문에도 수정작업이 들어가야한다. 이로인해 SQL에 의존적인 개발을 피하기 어렵다는 점이 큰 문제로 작용한다. 패러다임의 불일치 문제 (객체 vs 관계형 데이터베이스) 객체지향이 나온 사상과 관계형 데이터베이스가 나온 사상 자체가 다르다. 관계형 데이터베이스는 데이터를 정규화해서 보관..
yum을 이용한 java 설치 yum을 통해서는 자바11버전을 설치할 수 없다. 아래와 같이 1.7과 1.8버전에 대해서만 지원을 하기 때문에 11버전을 설치하기 위해서는 다른방법을 사용해야 한다. 찾아보니 Amazon에서 제공하는 OpenJDK인 Amazon Coretto를 다운받아 간편하게 11버전을 설치가 가능하다. 설치 방법 및 명령어는 아래를 참조하자 # aws coreetto 다운로드 sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm # jdk11 설치 sudo yum localinstall jdk11.rpm # jdk version 선택 sudo /usr/sbin/alternatives --c..
AWS EC2 apt 관련 AWS 관련하여 공부하면서 내용을 정리하고 있는 중이다. AWS를 사용해보지 않아서 모든게 새롭다.. 처음부터 위와같은 에러와 마주쳤다. 자바를 설치하는 과정에서 apt라는 소프트웨어 관리 명령어를 사용하는데.. 저 명령어를 찾을 수 없다는 에러다. 에러를 찾아 확인해보니.. EC2 Amazon Linux 2 AMI 는 apt-get 패키지가 아닌 yum 패키지를 사용해야한다는 원인을 찾았고 yum 명령어를 통해 update를 확인해보니 정상적으로 작동하는 것을 확인하였다. 이제 자바설치를 마저 진행하자! 참조 (https://somjang.tistory.com/entry/AWS-Amazon-Linux-2-AMI-%EC%97%90%EC%84%9C-apt-get-%EC%9D%B4-%EC%8B%A4%ED%9..
조합의 수 구하기 순열과 조합.. 학창시절 nPr이니 nCr이니 하며 수학시간에 열심히 배웠던 기억이 있다. 알고리즘을 공부하면서 다시 보려고 하니 까먹은 기억을 되살리려다보니 기억보다 기록을 해두자 라는 생각으로 정리하게 되었다. 먼저, 간단한 개념은 알고 있었다. 내가 이해가 잘안됬던 것은.... 그렇다.. 조합에서 위와 같은 식이 어떻게 적용이 되는 것인지 바로 확 와닿지 않았다. 공부하다 보면서 아! 그렇구나 하며 다시 알게 되었고, 이를 까먹지 않기 위해 알기 쉽게 정리하려고 한다. 서론이 너무 길었던 것 같다.. 자 지금부터 예를 들어 설명해 보겠다. 여기 아래와 같이 6명의 사람이 있다. 면접을 보는 사람들이다. 총 6명의 사람이 면접을 보았고, 이 회사에서는 3명을 채용하고자 한다. 먼저 조합의 개념을 간단..
피보나치 수열(배열 vs 재귀 비교) 피보나치 수열은 알고리즘 및 자료구조를 공부하는데 있어서 여러 유형에서 기본으로 나오게된다. 아래 두가지 예시를 가지고 비교해보며 설명하고자 한다. 물론 기억력의 한계가 있다보니 기록해두려는 목적 또한 있다는 점도 포함! 먼저 배열을 이용한 피보나치 예시이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 피보나치 수열 public class infArray4 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sy..
HTTP 메서드 속성 안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Cacheable Methods) 안전(Safe) 호출해도 리소스를 변경하지 않는다. GET, HEAD 같은 경우는 호출해도 변경이 일어나지 않기 때문에 안전하다. 그외에 무언가를 바꾸는 것들은 안전하지 않다. 안전의 부가적인 의심 계속 호출하여 로그 같은게 쌓여서 장애가 발생하는 경우도 안전한가? GET을 하던 도중 다른 사용자가 PUT으로 리소스를 변경해 버려도 상관 없을까? 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다! 멱등(Idempotent) f(f(x)) = f(x) 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같은 경우를 말한다 멱등 메서드 GET : 한번 조회하든, 두..