Web/JAVA(25)
-
[JPA] Java Persistence API 를 사용하는 이유
1. JPA 자바 진영에서 ORM(Object - Relation Mapping) 기술 표준으로 사용되는 인터페이스 모음 구현된 클래스와 맵핑 해주기 위해서 사용되는 프레임워크 JPA를 구현한 대표적인 오픈소스로는 Hibernate 가 있다. ORM(Object - Relation Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping( 연결 ) 해주는 것을 의미한다. 객체지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용 객체모델과 관계형 모델간의 존재하는 불일치를 ORM을 통해 객체간의 관계를 바탕으로 SQL문을 자동으로 생성 2. JPA 사용이유 기존의 개발 방식(Mybatis)은 SQL 중심적인 개발이었지만, JPA를 사용하면서 객체 중심으로 개발이 가능하..
2024.03.21 -
[JPA] 영속성 컨텍스트
1. 영속성 컨텍스트 ORM은 객체와 데이터베이스 테이블의 맵핑을 통해 엔티티 클래스 객체안에 포함된 정보를 테이블에 저장하는 기술 JPA에서는 엔티티 객체 정보를 영속성 컨텍스트를 통해 어플리케이션 내에서 오래 지속되도록 보관한다. Server side와 Database 사이에 엔티티를 저장하는 논리적인 영역이라고 할 수 있다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 영속성 컨텍스트는 엔티티 매니저(Session)를 생성할 때 하나 만들어진다. 그리고 엔티티 매니저(Session)을 통해서 영속성 컨텍스트에 접근할 수 있고 영속성 컨텍스트를 관리할 수 있다. EntityManagerFactory : EntityManager를 생성한다...
2024.03.20 -
[JAVA] GC에 대하여
Garbage Collection 자바에서 할당된 메모리들에 대해 Garbage Collector(GC)가 자동으로 불필요한 메모리를 수집해 해제해주는 역할을 담당 동적으로 할당된 메모리 영역 가운데 더이상 사용하지 않거나 불필요하게 할당된 영역을 탐지하여 자동으로 해제하는 기법 장점 유효하지 않은 포인터 접근 : 이미 해제된 메모리에 접근하는 버그를 방지한다. 이중 해제 : 이미 해제된 메모리를 또 다시 해제하는 버그를 방지 Memory leak 방지 : 더 이상 필요하지 않은 메모리가 해제되지 않고 남아있어 메모리가 부족해 프로그램 중단되는 버그 방지 단점 Garbage Collection 이 발생하는 시점을 예측하기 어려움 할당된 메모리가 해제된 시점을 알수없다. GC가 동작하는 동안에는 다른 동작..
2024.03.15 -
[JAVA] 에러(Error) 와 예외 클래스(Exception)
1. 프로그래밍의 오류 종류 컴파일 에러(compile-time error) : 컴파일시에 발생하는 에러 런타임 에러(runtime error) : 실행시에 발생하는 에러 논리적 에러(logical error) : 실행은 되지만 의도와 다르게 동작하는 것 1. 논리적 에러 (Logic Error) 이른바 '버그' 프로그램이 실행하고 작동하는데는 아무런 문제가 없지만, 결과가 예상과 달라 사용자가 의도한 작업을 수행하지 못하게 되어 서비스 이용에 지장이 생기는 에러 개발자는 프로그램의 전반적인 코드와 알고리즘을 체크 할 필요가 있다. 2. 컴파일 에러 컴파일 단계에서 오류 발견하면 컴파일러가 에러 메세지 출력해주는 것 문법 구문 오류(syntax error) 프로그램이 실행 자체가 불가하기 때문에, 그렇게..
2024.03.13 -
[JAVA] 추상클래스(Abstracat)
1. 추상 클래스(Abstract Class) 란? 일반적인 클래스는 구체적으로 데이터를 담아 인스턴스화 하는 클래스 특정 개발시점에 내용을 확정지으면 안되거나 계획(틀)만을 세울 때 추상적인 데이터를 담고있는 클래스 하나 이상의 추상 메소드를 보유함으로써 클래스를 불완전한 상태로 선언하여 서브 클래스로 하여금 메소드 오버라이드를 통해 추상메소드를 완성하도록 구현을 강제한다. 2. 특징 추상 메소드와 일반 메소드를 선언할 수 있다. 추상 클래스를 상속받는 모든 서브 클래스들은 추상 메소드를 반드시 재정의(강제구현)해야한다. new 연산자 사용을 통한 인스턴스화가 불가하다. 추상 클래스를 선언 할 때에는 abstract 키워드를 사용해야한다. abstract class 클래스{ ... public abst..
2024.03.07 -
[JAVA] 멀티스레드 환경에서 문제와 대책
1. Thread 프로그램이 실제로 실행되어, 메모리나 CPU와 같은 자원을 할당 받으면 이를 프로세스라고 부른다. 스레드는 프로세스 내에서 실제로 작업을 수행하는 한 단위 모든 프로세는 하나 이상의 스레드가 존재하고, 두개 이상의 스레드를 낮는 프로세스를 멀티 스레드 프로세스라고 한다 프로세스는 독자적으로 메모리를 할당받아 서로의 메모리를 공유할수 없지만, 프로세스 내부의 스레드는 같은 자원을 공유하여 사용이 가능하다. 여러 스레드를 사용하여 병렬 프로그래밍을 하게되면 웹 서버에서는 빠른 응답이 가능하다는 장점이 있다. 여러 스레드가 하나의 자원을 공유하고 있기 때문에 스레드 간 경쟁상태가 발생할수 있고, 이는 동시성 문제 2. 동시성 문제 해결 암시적 Lock 사용 가장 간단하면서 쉬운방법 Lock을..
2024.02.26