본문 바로가기

전체 글

(34)
[Java] 예외처리에 대한 공부 예외(Exception)란 개발자가 구현한 로직에서 발새한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 미리 예측이 가능하여 상황에 맞게 예외처리를 해야 한다.  오류(Error)란 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 미리 예측이 불가능하여 방지할 수 없다. 예외 계층체크 예외애플링케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeExceptiond을 제외한 모든 예외는 체크예외이다. 언체크 예외(런타임 예외)컴파일러가 체크하지 않는 언체크 예외이다. RuntimeException과 하위 언체크 예외를 모두 런타임 예외라고 한다. 예외 처리 란? 예기치..
[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를 상속받는다. public class Bear exte..
[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 한다. 이때 reachea..