분류 전체보기 420

[자바 ORM 표준 JPA 프로그래밍] 8. 프록시와 연관관계 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 프록시엔티티를 조회할 때, 연관된 엔티티를 항상 사용하는 것은 아닙니다.모든 연관관계를 한꺼번에 가져오게 될 경우, 성능이 떨어질 수 있습니다. 지연 로딩엔티티가 실제 사용될 때, 데이터베이스 조회를 하는 방법입니다. 프록시 객체실제 엔티티 객체 대신에 가짜 엔티티 객체를 사용합니다. (DB 접근 위임)실제 클래스를 상속받아 만들어짐 (겉모양 같음)실제 객체의 참조를 보관하며, 프록시 객체의 메소드를 호출하면 실제 객체의 메소드를 호출 (데이터베이스 조회 지연 목적) em.getReference()Member member = em.getReference(Member.class, "id1");member.getName(..

[자바 ORM 표준 JPA 프로그래밍] 7. 고급 매핑

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 상속 관계 매핑데이터베이스의 슈퍼타입-서브타입 논리를 테이블로 구현 조인 전략엔티티 각각을 테이블로 생성 + 자식 테이블의 기본키를 기본키+외래키로 사용 (부모 테이블의 기본키 받기)테이블에 컬럼을 따로 추가해주기 (DTYPE: 구분 컬럼)테이블 정규화 O + 참조 무결성 제약 O (외래키)단점: 조회 쿼리 복잡 + 삽입 쿼리 두 번 실행 @Inheritance조인 전략 지정 (상속 매핑 시)부모 클래스에 작성 @DiscriminatorColumn구분 컬럼 지정 (부모클래스)자식 테이블 구분용@Entity@Inheritance(strategy = InheritanceType.JOINED)@DiscriminatorColu..

[자바 ORM 표준 JPA 프로그래밍] 6. 다양한 연관관계 매핑

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 다대일여러 개의 엔티티가 하나의 동일한 엔티티와 연관될 수 있는 관계 단방향 [N:1]@ManyToOne@JoinColumn(name=”TEAM_ID”)private Team team; 양방향 [N:1, 1:N]@ManyToOne@JoinColumn(name=”TEAM_ID”)private Team team;@OneToMany(mappedBy="team")private List members = new ArrayList();양방향은 외래 키가 있는 쪽이 연관관계의 주인입니다.양방향 연관관계는 항상 서로를 참조해야 합니다. 2. 일대다하나의 동일한 엔티티가 여러 개의 엔티티와 연관될 수 있는 관계 단방향 [1:N]@One..

[자바 ORM 표준 JPA 프로그래밍] 5. 연관관계 매핑 기초

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 단방향 연관관계객체 연관관계참조로 연관관계를 맺음. 단방향 관계한 객체가 다른 객체 참조 O (다른 객체가 반대 객체 참조 X)객체 그래프 탐색을 통해 연관관계 파악 가능 테이블 연관관계외래키로 연관관계를 맺습니다. 양방향 관계한 객체가 다른 객체 참조 O + 다른 객체가 반대 객체 참조 O연관관계인 모든 테이블이 조인 쿼리에 쓰임 연관 관계 매핑@JoinColumn외래키 설정 (조인 시 사용)name외래키 이름referencedColummnName외래키가 참조하는 컬럼명foreignKey외래키 제약조건 (테이블 생성시에만) @ManyToOne다대일 관계 매핑optional관련 엔티티 존재 유무truefetch페치 전략..

[쉽게 배우는 운영체제] 1. 운영체제 개요

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 소개프로그래밍의 도입초기 컴퓨터는 설계된 대로만 사용할 수 있었습니다.사용자의 개입이나 프로그래밍 구현이 부족했습니다.프로그래밍을 통해원하는 프로그램을 추가하고 실행할 수 있게 되었습니다. 자원관리 및 사용자 인터페이스 제공이때, 프로그램이 사용하는 자원을 관리하고 사용자 인터페이스를 제공합니다. 동시성 관리하드웨어의 발전으로 병렬 처리가 가능해지면서, 여러 작업을 동시에 실행할 수 있게 되었습니다.병렬 실행에 필요한 동시성 관리의 역할을 합니다. 2. 역사ENIAC세계 최초의 전자 디지털 범용 컴퓨터대규모 데이터 처리에 사용되었습니다 (회계, 급여 계산, 통계 분석) 진공관 컴퓨터약 18,000개의 진공관을 사용하였습니다.거대한 크..

OS 2023.12.26

[Java의 정석] 13-3. 스레드: 실행 제어

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 8. 실행 제어 상태NEW스레드가 생성되고 아직 start()되지 않은 상태RUNNABLE실행중 또는 실행 가능한 상태BLOCKED동기화 블럭에 의해 일시정지된 상태WAITING,TIMED_WAITING일시정지 상태(작업이 종료되지 않음) 일시정지 시간이 지정된 경우TERMINATED작업이 종료된 상태  메서드sleep()지정된 시간동안 스레드를 정지시킵니다.지정한 시간이 지나고 나면 자동적으로 다시 실행대기 상태가 됩니다.join()다른 스레드의 작업이 끝날 때까지 대기하도록 만드는 메서드지정한 시간동안 실행되도록 합니다.지정한 시간이 지나거나 작업이 종료되면 join()을 호출한 스레드는 다시 돌아와 실행됩니다suspend()스레드를 일시..

Java 2023.11.30

[Java의 정석] 13-4. 스레드: 동기화

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 9. 동기화한 스레드가 진행중인 작업을 다른 스레드가 간섭하지 못하게 막는 것입니다.멀티스레드의 경우 여러 스레드가 같은 프로세스 내의 자원을 공유해서 작업하므로 서로의 작업에 영향을 주게 됩니다.한 스레드가 특정 작업을 끝마치기 전까지 다른 스레드에 의해 방해받지 않도록 하는것이 필요합니다. 임계영역공유데이터를 사용하는 코드 영역입니다. Lock단 하나의 스레드만 공유데이터를 사용하도록 하는 매커니즘입니다.해당 공유데이터를 사용하는 스레드는 락을 획득합니다.임계영역의 모든 코드를 수행하고 나서 락을 반납하며, 다른 스레드가 반납된 락을 획득하여 임계영역에 접근할 수 있습니다. synchronizedsynchronized 키워드를 붙여 임계영역..

Java 2023.11.30

[Java의 정석] 15-6. 입출력: Serialization

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 7. Serialization객체를 데이터 스트림으로 만드는 것을 뜻합니다.객체를 파일로 저장하거나 네트워크를 통해 서로 주고받을 때 필요합니다. 객체직렬화에서의 객체는 "클래스에 정의된 인스턴스 변수의 집합"을 의미합니다.클래스 변수나 클래스 메서드가 포함되지 않습니다.역직렬화 시에 클래스 관련 정보는 불필요합니다.내용물인 변수 값만 가지고 있으면 인스턴스를 메모리에 올릴수 있습니다. ObjectInputStream & ObjectOutputStream객체를 다루는 보조 스트림 입니다.인스턴스 변수의 직렬화에 사용됩니다.직렬화 시 참조 타입의 객체 변수도 모두 포함됩니다.FileOutputStream fos = new FileOutputStr..

Java 2023.11.29

[Java의 정석] 15-5. 입출력: File

남궁성님의 "Java의 정석" 책을 정리한 포스팅 입니다. 6. File파일 또는 디렉토리를 추상적으로 표현하는 클래스파일 또는 디렉토리를 다루는데 사용됩니다. 제어// 파일이름 (경로 포함)File f = new File("c:\\jdk1.8\\work\\ch15\\FileEx1.java"); // 디렉토리 경로, 파일이름 (경로 제외)File f = new File("c:\\jdk1.8\\work\\ch15", "FileEx1.java"); f.getName(); // 파일이름 (경로 제외)f.getPath(); // 경로f.getAbsolutePath(); // 절대경로f.getCanonialPath(); // 정규경로f.getParent(); // 디렉토리 경로File.pathSeparator; ..

Java 2023.11.29

[Java의 정석] 15-4. 입출력: 표준 입출력

남궁성님의 "Java의 정석" 책을 정리한 포스팅 입니다. 5. 표준 입출력콘솔을 통한 데이터 입력과 출력을 의미합니다.자바에서는 표준 입출력을 위한 3가지 입출력 스트림을 제공합니다.자바 애플리케이션의 실행과 동시에 자동적으로 생성됩니다. System.in콘솔로부터 데이터를 입력받는데 사용하는 입력 스트림입니다.InputStream System.out콘솔로부터 데이터를 출력하는데 사용하는 출력 스트림입니다.PrintStream System.err콘솔로부터 데이터를 출력하는데 사용하는 출력 스트림입니다.에러 로그 출력 전용으로 사용됩니다.PrintStream

Java 2023.11.29