| 2. 의미 있는 이름 Summary.의미 있고 발음하기 쉽고 검색하기 쉽게 이름을 지어주자.(존재 이유, 수행 기능, 사용 방법이 드러나도록)... || 의도를 분명히--변수나 함수 그리고 클래스 이름은 아래 질문에 모두 답해야 한다1. 변수(함수 or 클래스)의 존재 이유는?2. 수행 기능은?3. 사용 방법은?* 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말.1234int elapsedTimeInDays;int daySinceCreation;int daySinceModification;int fileAgeInDays;cs 1234567891011121314151617// 의도가 분명하지 않은 코드public List getThem() { List list1 = new ArrayList ..
| 엔티티 비교-- || 영속성 컨텍스트가 같을 때 엔티티 비교 * 동일성(identical) : == 비교가 같다.* 동등성(equinalent) : equals() 비교가 같다.* 데이터베이스 동등성 : @Id인 데이터베이스 식별자가 같다. || 영속성 컨텍스트가 다를 때 엔티티 비교 * 동일성(identical) : == 비교 실패.* 동등성(equinalent) : equals() 비교 만족. 단 equals() 구현 필요.(보통 비즈니스 키로 구현) ㄴ엔티티 비교 시 비즈니스 키를 활용한 동등성 비교를 권장.* 데이터베이스 동등성 : @Id인 데이터베이스 식별자가 같다. | 프록시 심화--프록시는 원본 엔티티를 상속받아서 만들어짐. || 영속성 컨텍스트와 프록시 1.em.getReference(..
| 엔티티 그래프 엔티티 조회시점에 연관된 엔티티들을 함께 조회하는 기능- 정적으로 정의하는 Named 엔티티 그래프- 동적으로 정의하는 엔티티 그래프 || 정적 엔티티 그래프(Named) c. 주문을 조회 시 연관된 회원도 함께 조회하는 엔티티 그래프 정의123456789101112131415161718@NamedEntityGraph(name = "Order.withMember", attributeNodes = { @NamedAttributeNode("member")})@Entity@Table(name = "ORDERS")public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne(fetch ..
| 웹 애플리케이션과 영속성 관리 컨테이너 환경에서 JPA가 동작하는 내부 동작 방식 || 트랜잭션 범위의 영속성 컨텍스트 스프링이나 J2EE 컨테이너 환경에서 JPA를 사용하면 컨테이너가 제공하는 전략을 따라야 함 ||| 스프링 컨테이너의 기본 적략 > 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용- 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다 !- 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료- 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근 ㄴ 다양한 위치에서 엔티티 매니저를 주입받아 사용해도 트랜잭션이 같으면 항상 같은 영속성 컨텍스트를 사용- 트랜잭션이 다르면 다른 영속성 컨텍스트를 사용 ㄴ 같은 엔티티 매니..
> [Spring + JPA] Make Web Application (1)[Spring + JPA] Make Web Application (2) Spring Data JPA 적용- 환경설정- Repository 리팩토링- 명세 적용 | 환경설정 ㅇ pom.xml에 spring-data-jpa 라이브러리 추가1234567 org.springframework.data spring-data-jpa 1.8.0.RELEASE Colored by Color Scriptercs ㅇ appConfig.xml에 추가 후 base-package 속성에 repository 위치 지정1cs | Repository Refactoring 기존 Repository들이 Spring Data JPA를 사용하도록 Refactoring ..
prior post : [Spring + JPA] Spring Data JPA 란? (1) | 명세(specification) - 명세를 이해하기 위한 핵심 단어는 술어(predicate), ㄴ 이것은 단순히 참이나 거짓으로 평가 ㄴ AND, OR 같은 연산자로 조합 가능 ㄴ 데이터를 검색하기 위한 제약 조건 하나하나를 술어라고 할 수 있음 - 술어를 Spring Data JPA는 org.springframework.data.jpa.domain.Specification 로 정의 - Specification은 composite pattern 으로 구성되어 여러 specification 조합 가능 (SQL Where) - Specification 기능 사용을 위해 org.springframework.data..
| 소개-- spring framework에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트 - CRUD 처리를 위한 공통 인터페이스 제공 - repository 개발 시 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입 - 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있도록 지원 - 공통 메소드는 스프링 데이터 JPA가 제공하는 org.springframework.date.jpa.repository.JpaRepository 인터페이스에 count, delete, deleteAll, deleteAll, deleteById, existsById, findById, save .. c.스프링 데이터 JPA 적용 - 공..
| Web Application (Spring + JPA) 2.--1. 프로젝트 환경설정2. 도메일 모델과 테이블 설게3. 애플리케이션 기능 구현 || 프로젝트 환경 설정--prior post : [Spring + JPA] Make Web Application (1) || 도메인 모델과 테이블 설계--prior post : [Spring + JPA] Make Web Application (1) || 애플리케이션 기능 구현-- ||| 개발 방법--* Controller : MVC Controller가 모여 있는 곳 Controller는 Service 계층을 호출하고 결과를 뷰(JSP)에 전달* Service : Service 계층에는 비즈니스 로직이 있고 트랜잭션을 시작 Service 계층은 데이터 접근 ..