Java 관련: 133개의 글
Pom.xml을 통해 관련 의존성을 추가하고 root-context.xml, servlet-context.xml 파일 설정을 통해 JPA와 스프링프레임워크를 연동합니다. 이어서 컨트롤러, 서비스, 도메인, 레파지토리 단위로 나눠 스프링프레임워크 애플리케이션을 개발합니다. pom.xml 의존성을 추가해 줍니다. 4.0.0 jpabook ch11-jpa-shop 1.0-SNAPSHOT jpa-shop war 1.6 UTF-8 UTF-8 4.1.6.RELEASE 4.3.10.Final 7.0.57 1.4.187 2.2 1.2 3.0.1 1.1.1 1.7.6 4.12 org.springframework spring-webmvc ${spring-framework.version} o..
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..
JPA 요소 엔티티(Entity) 데이터베이스에서 지속적으로 저장된 데이터를 자바 객체에 매핑한 것 메모리 상에 자바 객체의 인스턴스 형태로 존재하며 EntityManager에 의해 데이터베이스의 데이터와 동기화된다. 엔티티 매니저(Entity Manager) 필요에 따라 Entity와 데이터베이스의 데이터를 동기화한다. EntityManager에서 제공하는 Entity 조작 API를 이용해 Entity에 대해 CRUD 작업을 할 수 있다. 영속성 컨텍스트(Persistence context) 영속성 영구적으로 저장하는 환경이다. 엔티티를 저장하거나 검색할 때 엔티티 관리자는 영속성 컨텍스트에서 엔티티를 저장하고 관리한다. 영속성 컨텍스트에 접근하거나 관리를 하려면 엔티티 매니저를 통해야 한다. 엔티티 ..
사용자 정의 태그를 만들어서 사용할 수 있다. 사용 방법은 EL에서 함수를 만드는 방법과 유사하나 조금 더 복잡한 부면이 있다. 커스텀 태그를 만들기 위해서는 tld 파일과 java class 파일이 필요하다. 예제로 유저에게 랜덤하게 조언을 해 주는 커스텀 태그 소스를 보면 이해하는데 도움이 된다.(소스는 역시 Head & First Servelet & JSP에서 사용된 것이다.) 우선 tld 파일은 EL과 마찬가지로 WEB-INF 밑에 작성한다. 이름은 myCustomTag.tld로 한다. 0.9 RandomTags rollIt com.example.DiceRoller int rollDice() randomThings random advice advice com.example.AdvisorTagHan..
웹 브라우저는 웹서버에 파라미터를 전송할 때 알맞은 캐릭터 셋을 이용해서 파라미터 값을 인코딩하여 전달한다. 반대로 웹 서버는 알맞은 캐릭터 셋을 이용해서 웹브라우저가 보내온 파라미터를 디코딩한다. 어떤 캐릭터 셋을 이용할지의 여부는 GET방식과 POST방식에 따라 다르다. 1.POST방식 POST방식에서는 응답결과에 사용하는 캐릭터셋을 이용해서 파라미터를 인코딩한다.
해당 코드는 Github 공개되어 있습니다. 테스트 코드를 작성할 할 때 외부 서비스와 통신하는 구간은 Mocking 해서 해서 테스트를 진행하게 됩니다. 대표적으로 HTTP 외부 통신이 있습니다. 이와 비슷한 내용으로 RestTemplate Mock 기반 테스트하기을 포스팅을 했었습니다. 그와 비슷한 주제로 Mockserver Netty 기반으로 Mock Test를 진행하는 방법에 대해서 다루어보겠습니다. Mockserver Netty 장점 직관적이고 쉽게 학습하기 좋은 점도 있지만, MockRestServiceServer에 비해서 가장 큰 장점으로 생각되는 것은 HTTP Client에 대한 제약이 생대적으로 없는 부분입니다. MockRestServiceServer 이름에서부터 설명되지만 ResTemp..
스프링 JDBC 프로그래밍 - MyBatis 연동 이 글에서는 Oracle DB 11g를 사용한다고 가정한다. 다른 DB를 사용해도 무방하다. MyBatis - Spring JDBC 프로그래밍을 쉽게 작업할 수 있도록 만든 라이브러리 - Mapper의 역할을 확장하여 쿼리문 작성을 모두 Mapper에서 할 수 있도록 지원한다. 의존성 추가 Spring JDBC, Oracle JDBC 드라이버, Apache Commons DBCP와 MyBatis 라이브러리 의존성을 추가한다. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 org.mybatis mybati..