_08_Iterator public class _08_Iterator { public static void main(String[] args) { // 이터레이터 // 컬렉션 프레임워크의 데이터를 순회하는 거라고 생각하면 쉽다. List list = new ArrayList(); // ctrl하고 클릭해보면 List는 인터페이스이고, ArrayList는 클래스이다. // ArrayList는 List 인터페이스를 상속받는 형태로 구현이 되는 것이에요. // 그래서 이는 다형성 사례라고 할 수 있음. LinkedList 써도 마찬가지 //추가 // 알 수 없는 오류로 잘못 된 더미 값이 들어온다고 쳐보자 list.add("유재석"); list.add("(알 수 없음)"); list.add("김종국"); li..
후발대수업_15. Iterator, 퀴즈, 익명클래스 Iterator : 프로그래밍에서 이터레이터는 개발자가 컨테이너, 특히 리스트를 순회할 수 있게 해주는 객체다. 이터레이터는 데이터베이스 커서와 동작이 유사하다. 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조의 내부요소를 순회하는 객체 배열이나, 셋, 맵을 순회하고 불필요한 데이터를 바로 삭제 할 수 있다. 익명클래스는 내부클래스 (Inner Class) 일종으로 단어 그대로 이름이 없는 클래스를 말한다. 익명 클래스는 클래스 정의와 동시에 객체를 생성할 수 있다. 따로 클래스 정의 없이 메소드 내에서 바로 클래스를 생성해 인스턴스화 할 수 있으며 이렇게 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용 될 수 있고, 익명으..
엔티티 매핑 관련 어노테이션 어노테이션 설명 @Entity 클래스를 엔티티로 선언 @Table 엔티티와 매핑할 테이블을 지정 @Id 테이블의 기본키에 사용할 속성을 지정 @GenerateValue 키 값을 생성하는 전략 명시 @Column 필드와 컬럼 매핑 @Lob BLOB, CLOB 타입 매핑 @CreationTimestamp insert 시 시간 자동 저장 @Enumerated enum 타입 매핑 @Transient 해당 필드 데이터베이스 매핑 무시 @Temporal 날짜 타입 매핑 @CreateDate 엔티티가 생성되어 저장될 때 시간 자동 저장 @LastModifiedDate 조회한 엔티티의 값을 변경할 때 시간 자동 저장 BLOB, CLOB의 의미 - CLOB이란 사이즈가 큰 데이터를 외부 파일..

* 영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에 있는 중간 계층이다. - 이렇게 중간 계층을 만들면 버퍼링, 캐싱 등을 할 수 있다. 1차 캐시 - 영속성 컨텍스트에는 1차 캐시가 존재하며 Map 로 저장된다. - entityManager.find() 메소드 호출 시 영속성 컨텍스트의 1차 캐시를 조회한다. - 엔티티가 존재할 경우 해당 엔티티를 반환하고, 엔티티가 없으면 데이터베이스에서 조회 후 1차 캐시에 저장 및 반환한다. 동일성 보장 - 하나의 트랜젝션에서 같은 키값으로 영속성 컨텍스트에 저장된 엔티티 조회 시 같은 엔티티 조회를 보장한다. - 이는 1차 캐시에 저장된 엔티티를 조회하기 때문에 가능하다. 트랜젝션을 지원하는 쓰기 지연 - 영속성 컨텍스트에는 쓰기 지연 SQL 저장소가 존재한..

엔티티 (Entity) : 엔티티란 데이터베이스의 테이블에 대응하는 클래스이다. @Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다. 데이터베이스에 item 테이블을 만들고 이에 대응 되는 item 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 되는 것. 클래스 자체나 생성한 인스턴스도 엔티티라고 부른다. 엔티티 매니저 팩토리 (Entity Manager Factory) : 엔티티 매니저 인스턴스를 관리하는 주체 - 애플리케이션 실행 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성한다. 엔티티 매니저 (Entity Manager) : 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공한다. - 내부적으..

Entity Post TimeStamped @Entity @Getter @NoArgsConstructor public class Post extends TimeStamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String writer; private String password; private String content; // public Board() {} // 기본 생성자는 반드시 있어야 한다. public Post(String title, String writer, String password, String content) { this.title = tit..
Entity Post @Entity @Getter @NoArgsConstructor public class Post extends TimeStamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String writer; private String password; private String content; // public Board() {} // 기본 생성자는 반드시 있어야 한다. public Post(String title, String writer, String password, String content) { this.title = title; this.wri..