분류 전체보기: 2105개의 글
JPQL JPQL(Java Persistence Query Language)은 JPA를 구현한 프레임워크에서 사용하는 언어입니다. JPA 구현 프레임워크에서는 JPQL을 SQL로 변환해 데이터베이스에 질의하게 됩니다. JPQL은 테이블을 대상으로 쿼리하지 않고 객체를 고려해 쿼리합니다. 이 때문에 JPQL은 데이터베이스 테이블에 직접적인 의존 관계를 맺고 있지 않습니다. JPQL은 SQL과 비슷한 구조로 구성 됐습니다. SELECT ... FROM ... [WHERE ...] [GROUP BY ... [HAVING ...]] [ORDER BY ...] 이때 JQPL DELTE나 UPDATE는 다음과 같은 두개의 쿼리로 나타낼 수 있습니다. DELETE FROM ... [WHERE ...] UPDATE ...
엔티티 매핑 엔티티 맵핑은 JPA에서 제공하는 다양한 맵핑 애노테이션을 이용합니다. 대표적인 애노테이션을 살펴보면 다음과 같습니다. 테이블 맵핑 애플리케이션이 시작 되면 테이블 매핑 애노테이션이 있는 모든 클래스를 대상으로 적합성을 검사합니다. @Entity @Table(name="MEMBER") public class Product{ ... } 테이블 맵핑은 누락 되지 않도록 합니다. 누락 되면 엔티티를 식별할 수 없어 세션 팩토리를 생성할 수 없다는 에러가 발생합니다. Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: jpabook] Unable to build Hibernate SessionFact..
엔티티 매니저 JPA의 기능 대부분을 EntityManager가 제공하고 있습니다. 엔티티 매니저를 통해 데이터베이스의 기본 동작인 CRUD(Create, Read, Update, Delete)를 제공합니다. 엔티티 매니저는 다음과 같은 형태로 선언해 사용합니다. // Use persistence.xml configuration EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1") EntityManager em = emf.createEntityManager(); // Retrieve an application managed entity manager // Work with the EM em.close(); ... emf..
JPA에 기반한 비즈니스로직 중심의 S/W 개발 JPA는 POJO기반의 ORM(Object-Relational Mapping) 프로그래밍을 제공하며, Hibernate와 유사한 ORM 솔루션이다. JPA는 Java Persistence API로 풀 어 쓸 수 있으며, Persistence는 영속성 혹은 지속성이라고 표현할 수 있는데, 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현할 수 있으며, 영속성을 갖지 안는 데이터는 단지 휘발성으로 메모리에만 존재하게 된다. JPA의 환경설정은 '/META-INF/persistence.xml'에 할 수 있다. JPA 필요성 ORM 맵핑에 대한 표준쿼리의 필요성 D..
운영시 JVM 상태 모니터링하는 명령어 $ sudo yum install java-1.8.0-openjdk-devel 를 통해 도구를 설치한다. sudo -u tomcat jstack sudo -u tomcat jstat -gcutil -h20 1000 jstat -gccapacity sudo -u tomcat jmap -histo jmap -heap jmap -dump:live,format=b,file=dump.bin : live 되고 있는 객체만 dump 뜬다. file 위치는 홈디렉토리이다. Thread 별 CPU 도 확인 할수 있음: htop 혹은 /proc/{pid}/task/000/stat 정보로 확인 가능
MVC 모델2 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)라는 세 가지 역할을 나눔 IPO에 견주어보면 입력 - 컨트롤러 / 처리 - 모델 / 출력 - 뷰에 해당하지만, 컨트롤러에 전체의 흐름을 제어하는 역할이 부여되었다는 점이 다름 MVC 모델을 기반으로 삼으면 로직과 디자인의 분리를 구현할 수 있음. 로직은 모델, 디자인은 뷰가, 컨트롤러는 접착제 역할 IPO : 입력(Input), 처리(Process), 출력(Output)이라는 컴퓨터 처리의 기본적인 흐름 구성요소 모델(Model) 애플리케이션의 처리 부분과 그와 관련된 정보의 보존을 담당 화면에 대한 입출력같은 부분에는 일절 관여하지 않음 뷰(View) 모델의 결과를 화면에 표시하는 역할을 담당 처리 결과는 모..
D2 Coding 글꼴 다운로드 : https://github.com/naver/d2codingfont Mac에 추가하기 Finder > 서체 관리자 > 추가 > 다운로드한 글자 디렉터리 중 "D2CodingAll" 내의 항목을 선택 또는 D2CodingAll에서 ttc 파일을 실행 단) 사용자 글꼴이 아닌 기본 글꼴에 추가해야 인텔리제이에서 사용할 수 있음 Finder에 적용하기 /* 참고 - 글꼴은 서체 관리자에 있는 이름으로, 단 띄어쓰기는 제외한다 */ // D2Coding 글꼴 적용 defaults write com.apple.finder NSSystemFont -string D2Coding;killall Finder // 맥 기본 폰트로 롤백 defaults delete com.apple.fi..
뭐가 이상할 때 [Build] > [Rebuild project] [File] > [Invalidate caches / Restart] > [Invalidate and Restart] 이래도 안되면 그냥 인텔리제이 끄고 프로젝트의 .idea와 .gradle을 지우고 다시 인텔리제이를 켰다. 단축키 ⌃ + ⇧ + SPACE (길게): 스마트완성 - 현재 컨텍스트에 적용할 수 있는 가장 적합한 심볼 목록 표시 ⌃ + ⇧ + SPACE (길게)를 두 번: 체인완성 - 스마트완성보다 자세히 분석하여, 현재 컨텍스트에서 메서드나 게터로 액세스할 수 있으며 적용 가능한 심볼 목록을 표시 ⌥ + ENTER : 오류 수정을 위해 선택할 수 있는 액션 목록이 열림 ⌘ + N : (프로젝트 도구창) 새 항목 만들기 ⇧ +..
1.5 Spring5 Reactive 이번챕터에서 다룰 Spring Reactive는 제가 실무에서는 다루어보지 못한 기술입니다. 하지만 Spring5가 나오면서 가장 열정적으로 소개하고있는 기술이기에 정리를 해보려고 합니다. Spring에서는 “Reactive”라는 단어를 다음과 같이 정의하고 있습니다. The term, “reactive,” refers to programming models that are built around reacting to change — network components reacting to I/O events, UI controllers reacting to mouse events, and others. In that sense, non-blocking is react..
Type Parameter 이름 컨벤션 Type Parameter의 이름 컨벤션에 대해서 알아보도록 하겠습니다. 이번 예제에서는 T를 사용했었습니다. 이 T도 오라클 문서의 이름 컨벤션에서 가져온 것입니다. Type Parameter로 여러가지 타입이 올 수 있습니다. 아래는 오라클 문서에 있는 Type Parameter의 컨벤션 리스트입니다. E - 요소 (Collections Framework에서 사용) K - 키 N - 숫자 T - 타입 V - 값 S,U,V etc. - 2, 3, 4 번째 types