목록분류 전체보기 (79)
영권's
JPA는 EntityManagerFactory를 통해서 EntityManager를 생성할 수 있고 EntityManager는 내부적으로 JDBC를 사용해서 데이터베이스와의 통신을 하게된다. 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 언어 "엔티티를 영구 저장하는 환경" 이라는 뜻 EntityManager.persist(entity) 사실 DB에 저장한다는 뜻이 아니라, 영속성 컨텍스트를 통해 entity를 영속화 한다는 뜻이다. persist 메서드는 사실 entity를 디비에 저장하는게 아니라 영속성 컨텍스트라는 곳에 저장하는 것이다. 영속성 컨텍스트는 논리적인 개념이고 눈에 보이지 않고 EntityManager를 통해서 영속성 컨텍스트에 접근할 수 있다. 엔티티의 생명주기 비영속(new/tr..
2021-09-27 TIL 기존에 java 어플리케이션과 RDB가 통신하기 위해서 JDBC, JDBCTemplate, Mybatis 를 많이 이용했었는데 이 방법들은 RDB와 자바 객체가 가지는 기본적인 패러다임의 불일치가 발생하게 되고 이를 JPA로 극복할 수 있다. 예를 들어 JDBC, JDBCTemplate의 경우 자바 코드에 쿼리문이 삽입 되어 있는 한계점이 있고 Mybatis 또한 자바 객체와 테이블간의 동일성을 유지하기가 어려울 수 있다. jpa가 ORM(Object Relation Mapper)인 이유도 객체와 RDB간의 관계를 매핑 시켜주기 때문인데 jpa를 사용 했을 때 장점 생산성 증진 Mybatis를 이용하면 만약 객체에 필드가 추가되거나 하면 쿼리를 수정하거나 해야하는데 이를 SQL..
record Java 16에서부터는 record라는 형태의 클래스를 사용할 수 있다. record 선언의 헤더에 내용에 필요한 값을 지정합니다. 그러면 적절한 접근자, constructor, equals, hashCode, and toString 메서드가 자동으로 생성됩니다. 레코드의 필드는 클래스가 단순한 "데이터 운반" 역할을 하기 때문에 final 필드입니다. 예를 들어 다음과 같이 생성한 클래스와 record는 동일합니다. record Rectangle(double length, double width) { } public final class Rectangle { private final double length; private final double width; public Rectangle(..
Java Stream Stream은 어떤 연속된 데이터를 처리하는데 필요한 오퍼레이션의 모음이라고 생각하면 좋다. 그 자체가 데이터가 아니고 컬렉션 안에 있는 데이터들을 소스로 사용해서 어떤 처리를 하는것이다. 예를 들어 어떤 데이터가 있다고 가정하고 어떤 컨베이어 벨트에 흘려 보내는데 데이터에 각 작업을 한다. 1. 색을 칠하고 2 반으로 나누고 3. 컨테이너에 담는 과정을 하는 작업. 여기서 처리하는 것 자체가 Stream이라고 생각하면 좋다. 중개 오퍼레이션 Stream을 리턴한다. Stateless / Stateful 오퍼레이션으로 더 상세하게 구분할 수 있다.(대부분은 Stateless지만 distinct나 sorted 처럼 이전 이전 소스 데이터를 참조해야 하는 오퍼레이션은 Stateful 오..
TIL 주문관리 어플리케이션 클론 코딩 클론 코딩 : 주문관리 어플리케이션 1일차 Product에 대한 정보를 react에서 조회할 때 사용할 api 만들기 사용자가 프론트단에서 product에 대한 조회 및 간단한 장바구니 기능 만들기 프론트와 협업하기 위한 React 익히기 새로운 React 앱 만들기 : 노드 패키지를 npx로 실행시켜서 create react app 을 실행시켜서 React 앱 만들기 React 구조 : package.json안에 있는 scripts 명령어들로 start, build, test 등을 할 수 있다. React는 UI를 만들기 위한 JS 라이브러리이다. React는 Component 단위 구조이다. 계층구조로 나뉘게 되는데 만약 자식에서 부모로는 이벤트처리를 할 수 없..
TIL 주문관리 어플리케이션 클론 코딩 과제 피드백 수정 클론 코딩 : 주문관리 어플리케이션 1일차 내용 : Product에 대한 스프링 부트 어플리케이션 작성 특정 url 입력시 product 목록 조회 관리자 페이지에서 제품 생성 과제 피드백 수정 과제는 CommandLineApplication으로 입력 받아 바우처를 create, list, exit 명령을 수행할 수 있게 하는 거였는데 기존에 작성한 코드는 CommandLineApplication 내의 분기문이 많았어서 객체지향적으로 좋은 코드는 아니었다. 객체지향 체조 라는 것을 언급하면서 분기문은 최대한 적게 사용하는 것이 사실 좋다고 했고 그래서 멘토님이 Enum등을 활용해서 최대한 없애는 것이 좋다 라고 조언해주었다. 기존 코드는 보기만 해..