목록전체 글 (416)
mojo's Blog
회원 리포지토리 개발 구현 기능 - 회원 등록 - 회원 목록 조회 순서 - 회원 리포지토리 개발 - 회원 서비스 개발 - 회원 기능 테스트 @Repository public class MemberRepository { @PersistenceContext private EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); }..
구현 요구사항 ※ 구현해야 할 기능 회원 기능 - 회원 등록 - 회원 조회 상품 기능 - 상품 수정 - 상품 등록 - 상품 조회 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 예제를 단순화 하기 위해 다음 기능은 구현하지 않음 - 로그인과 권한을 관리하지 않음 - 파라미터 검증과 예외 처리 단순화 - 상품은 도서만 사용함 - 카테고리는 사용하지 않음 - 배송 정보는 사용하지 않음 애플리케이션 아키텍처 계층형 구조를 사용 - controller, web : 웹 계층 - service : 비즈니스 로직, 트랜잭션을 처리 - repository : JPA 를 직접 사용하는 계층, 엔티티 메니저를 사용 - domain : 엔티티가 모여 있는 계층으로 모든 계층에서 사용 ※ 패키지 구조 jpabook..
소개 ※ JPA 는 다양항 쿼리 방법을 지원한다. - JPQL - JPA Criteria - QueryDSL - 네이티브 SQL - JDBC API 를 직접 사용, MyBatis, SpringJdbcTemplate 를 함께 사용 ※ JPQL 가장 단순한 조회 방법 - EntityManager.find() - 객체 그래프 탐색 (ex : a.getB().getC()) 만약 나이가 18살 이상인 회원을 모두 검색하고 싶은 경우? 결국 문제는 검색 쿼리이다. 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다. 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다. 애플리케이션이 필요한 데이터만 DB 에서 불러오려면 결국 검색 조건이 포함된 SQL 이 필요하다. 따라서, JPA 는 SQ..
네트워크의 기초 네트워크란 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다. - 노드 : 서버, 라우터, 스위치 등 네트워크 장치 - 링크 : 유선 또는 무선 ※ 네트워크 토폴로지 네트워크 토폴로지는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미한다. ① 트리 토폴로지 트리 토폴로지는 계층형 토폴로지이며 트리 형태로 배치한 네트워크 구성을 한다. 장점 : 노드의 추가, 삭제가 쉬움 단점 : 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼침 ② 버스 토폴로지 버스 토폴로지는 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성이며, 근거리 통신망(LAN) 에서 사용된다. 장점 : 설치 비용이 적고 신뢰성이 우수하며 중앙 통신 회선..
기본값 타입 ※ JPA 의 데이터 타입 분류 엔티티 타입 - @Entity로 정의하는 객체 - 데이터가 변해도 식별자로 지속해서 추적이 가능하다. (ex : 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능) 값 타입 - int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가 (ex : 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체) ※ 값 타입 분류 기본값 타입 - 자바 기본 타입(int, double) - 래퍼 클래스(Integer, Long) - String 임베디드 타입(embedded type, 복합 값 타입) 컬렉션 값 타입(collection value type) ※ 기본값 타입 - 생..
프록시 Member 를 조회할 때 Team 도 함께 조회해야 할지에 대한 이슈가 있다. 아래의 코드를 보도록 하자. private static void printMember(Member member) { System.out.println("member = " + member.getUsername()); } private static void printMemberAndTeam(Member member) { String username = member.getUsername(); System.out.println("username = " + username); Team team = member.getTeam(); System.out.println("team = " + team.getName()); } 두 가지..