분류 전체보기 (41) 썸네일형 리스트형 [JPA] 영속성에 대한 공부 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리 엔티티 매니저를 만드는 공장이다.생성 비용이 크다. 따라서 한 개만 만들어서 애플리케이션 전체에 공유한다.여러 스레드가 동시에 접근해도 안전하게 설계되어 있다.여러 스레드에서 접근이 가능하다.EntityManagerFactory emf= Persistence.createEntityManagerFactory("jpabook"); //"jpabook"은 호출될 jpa 설정 코드 이름엔티티 매니저 엔티티 매니저 팩토리보다 생성 비용이 적다.여러 스레드가 동시에 접근하면 동시성 문제가 발생한다.스레드간 공유를 하면 안 된다.EntityManager em = emf.createEntityManager(); // 엔티티 매니저 팩토리에서 엔티티 매니저 생성.. [Spring] 프록시와 AOP에 대한 공부 프록시대리자라는 의미로 간접적으로 대신하는 것을 의미한다.위 그림처럼 client가 server를 직접 호출할 수 있지만 client와 server사이에 대리자 즉 proxy를 두어 간접 호출할 수 있다. 아래처럼 간접 호출한 것을 대리자 proxy라고 한다. 위에 간접호출 부분에서 여러 프록시를 두어 호출이 가능하다. 이걸 프록시 체인이라고 한다. 프록시에서 중요한 점은 호출을 요청하는 객체가 서버를 호출한것인지, 프록시를 호출한것인지 몰라야한다. 어떤 것이 호출되는지 모르는것 즉 인터페이스를 사용해야한다. 또한 서버 객체를 프록시 객체로 변경해도 client의 코드를 변경해서는 안된다. 객체와 객체 사이에 프록시 객체가 중간에 있으면서 접근 제어와 부가 기능 추가를 수행 가능하다. 프록시는 2가지가 .. [Spring] Bean에 대한 공부 Bean스프링 컨테이너에서 객체를 생성하고 관리되는 객체이다. 스프링 컨테이너Bean의 인스턴스화, 구성, 생명 주기, 제거 등 Bean을 관리하는 기능을 한다. 스프링 Bean은 DI와 IoC를 이용하여 외부에서 객체를 주입받는다. 이때 외부라는 게 스프링 컨테이너를 의미한다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class)ApplicationContext를 스프링 컨테이너라 부른다. 스프링 컨테이너는 IoC 컨테이너, DI 컨테이너라고도 한다. ApplicationContext는 인터페이스이다. 위 코드는 스프링 컨테이너를 생성하고 구성 정보인 AppConfig.class를 넣.. [Spring] DI와 IoC에 대한 공부 Dependency (의존관계)A가 B를 의존하면 B가 변하면 A에도 영향을 미치는 관계를 말한다. public class Computer { private SamsungRam16g samsungRam16g; public Computer() { samsungRam16g=new SamsungRam16g(); }}위 코드처럼 Computer는 SamsungRam16g에 의존하게 된다. 필자는 간단한 예시로 하나의 클래스에서만 들었지만 실제로 이렇게 모든 코드를 짠다면 만약에 SamsungRam16g이 아니라 SamsungRam32g으로 변경하거나 다른 램으로 변경을 할 경우 쓰고 있는 모든 코드를 변경해야 한다.public class Computer { private Ram.. [Java] 다형성에 대한 공부 다형성(Polymorphism)하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 클래스가 상속 관계에 있을 때 나타나는 성질이다.public class Car { public void carMethod(){ System.out.println("자동차입니다."); }}public class OilCar extends Car{ public void oilCarMethod(){ System.out.println("기름차입니다."); }}위 코드는 OilCar가 Car를 상속하는 코드이다.public class PloyMain { public static void main(String[] args) { System.out.println.. [Java] 상속과 구현에 대한 공부 상속 관계객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 메서드를 새로운 클래스에서 재사용하게 해 준다.extends 키워드를 사용하며 하나의 대상만 선택할 수 있다. 부모 클래스상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스public class Animals { public void sound(){ System.out.println("소리를 냅니다."); }} 자식 클래스부모 클래스로부터 필드와 메서드를 상속받는 클래스public class Eagle extends Animals { public void fly(){ System.out.println("날아 갑니다."); }}eagle이 Animals를 상속받는다.publi.. [Java] Garbage Collector 대한 공부 Garbage Collector프로그램이 동적으로 할당했던 메모리 영역(Heap) 중 사용하지 않는 영역을 탐지하여 해제하는 기능이다.public class Main{ public static void main(String[] args){ User user=new User("홍길동","20") user=new User("김철수","25") }}위 코드를 보면 user는 처음에 User 객체가 생성되고 '홍길동'을 참조하고 있다. 하지만 다음줄이 실행되면서 '김철수'를 참조한다. 이때 참조하지 않는 '홍길동'이 GC의 대상이 된다. GC에 과정으로 Mark and Sweep 있다. 처음에는 GC가 Stack의 모든 변수를 스캔하면서 객체가 참조하고 있는 변수를 Marking.. [Java] JVM의 Heap, Stack구조에 대한 공부 자바 메모리 구조에 대한 공부를 하면서 Heap과 Stack 영역에 대하여 간단하게 지나갔는데 이번 글을 통해서 자세하게 공부해 보자위 그림(Runtime Data Area 영역)에서 JVM stack과 Heap의 대해 공부하겠다.Heap영역1. 프로그램을 실행하면서 생성한 모든 객체가 저장된다.2. 주기적으로 GC가 제거하는 영역이다.위 그림은 자바 7 이전과 8 이후의 JVM 구조이다. 위 그림처럼 Heap은 영역이 나누어지는데 이는 GC이 Heap을 효율적으로 삭제하기 위해서 3가지 영역으로 나누어진다. New/Young 생명 주기가 짧은 객체를 GC 대상으로 하는 영역 Edennew를 통해서 생성된 객체가 위치한다. 정기적인 GC후 살아남은 객체들은 Survivor로 이동한다.survivor1 /.. 이전 1 2 3 4 5 6 다음