전체 글333 객체지향의 사실과 오해 - 협력하는 객체들 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - God Object: https://en.wikipedia.org/wiki/God_object - 개요 개발자나 설계자는 실세계의 사물이나 상황을 소프트웨어로 구현하고 사물의 속성과 행동을 클래스의 속성과 메소드로 구현하는것이 "객체지향적"이라고 생각하지만 실상은 소프트웨어와 실세계 사물간의 거리가 먼 것이 일반적이다. 그렇다면 컴퓨터공학을 전공하면서 지겹도록 듣던 붕어빵틀과 붕어빵은 도대체 뭘까? 엄청나게 똑똑해서 박사과정을 수료 하고 전공서적을 쓴 사람들은 헛소리를 한 것일까? 그것은 실세계의 모방이라는 관점으로 설명하는것이 객체 지향의 첫 발을 들여놓는 입문자들에게 객체 지향의 개념.. 2021. 8. 8. JPA - 객체지향 쿼리 언어 - Criteria 쿼리 생성 - 참조: 자바 ORM 표준 JPA 프로그래밍 - Criteria 쿼리 생성 Criteria 를 사용하려면 CriteriaBuilder.createQuery() 메소드로 Criteria 쿼리를 생성하면 된다. CriteriaBuilder 인터페이스의 메소드 시그니처는 아래와 같다. public interface CriteriaBuilder { /** * Create a CriteriaQuery object. * @return criteria query object */ CriteriaQuery createQuery(); /** * Create a CriteriaQuery object with the specified result * type. * @param resultClass type of the q.. 2021. 8. 5. JPA - 객체지향 쿼리 언어 - Criteria - 참조: 자바 ORM 표준 JPA 프로그래밍 - Criteria Criteria 는 JPQL 의 작성을 도와주는 빌더 클래스이다. 문자열로 JPQL 을 작성하면 런타임이 되어야 문법 오류를 알 수 있지만 Criteria 는 자바 코드 기반이기 때문에 안전하게 JPQL 을 작성할 수 있다. 하지만 코드가 복잡해서 직관적으로 이해하기 힘들다는 의견도 있다. 대부분의 내용이 JPQL 과 중복되므로 사용법위주로 살펴보자. - Criteria 기초 Member member1 = new Member(); member1.setName("Name#1"); em.persist(member1); Member member2 = new Member(); member2.setName("Name#2"); em.persist(m.. 2021. 8. 4. JPA - 객체지향 쿼리 언어 - JPQL NamedQuery - 참조: 자바 ORM 표준 JPA 프로그래밍 - Named Query 여태까지는 JPQL 예제를 작성하면서 String 변수에 JPQL 을 완성하여 수행하였다. 이를 동적 쿼리라고 한다. Mybatis 를 사용해본 경험이 있다면 보통 XML 에 특정 Query 를 선언해놓고 맵핑되는 파라미터만 변경하여 사용해본적이 있을 것이다. 이를 정적 쿼리 라고 한다. JPQL 도 XML 이나 어노테이션으로 정적 쿼리를 미리 작성해놓을 수 있다. NamedQuery 는 어플리케이션 로딩 시점에 미리 JPQL 문법을 체크하여 파싱한다. 오류 파악도 용이하며 미리 파싱한 결과를 재사용하여 성능상 이점도 있다. NamedQuery 는 @NamedQuery 어노테이션에 작성하는 방식과 XML 에 작성하는 2 가지 방식이 .. 2021. 8. 3. JPA - 객체지향 쿼리 언어 - JPQL 다형성 쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 다형성 쿼리 앞에서 JPA 상속관계 맵핑을 배운적이 있다. Item 엔티티를 확장하여 Book, Album, Movie 엔티티를 선언하였다. Single Table 전략으로 선언했던 Item 과 Book 엔티티의 코드를 다시 한번 살펴보자. @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "ITEM_TYPE") public abstract class Item extends DateMarkable { @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private String name.. 2021. 8. 3. JPA - 객체지향 쿼리 언어 - JPQL 서브쿼리, 조건식 - 참조: 자바 ORM 표준 JPA 프로그래밍 - JPQL: https://docs.oracle.com/html/E13946_04/ejb3_langref.html - 서브 쿼리 JPQL 도 SQL 처럼 서브 쿼리를 지원한다. 다만 SQL 처럼 SELECT, FROM, WHERE, HAVING 절에 쓸 수 있는것은 아니고 WHERE 와 HAVING 절에서만 쓸 수 있다. 하이버네이트 HQL 은 SELECT 절의 서브쿼리를 허용하며 일부 JPA 구현체는 FROM 절의 서브쿼리도 지원하므로 자신이 사용할 구현체의 스펙을 잘 알아보고 사용하도록 하자. SQL 의 기본적인 문법은 다루지 않는다. JPQL 의 특성을 이용한 문법을 사용해보자. Member member = new Member(); member.set.. 2021. 8. 3. 이전 1 ··· 27 28 29 30 31 32 33 ··· 56 다음