반응형

Java 11

JPA의 영속성 컨텍스트란 무엇인가?

영속성 컨텍스트(persistence context)영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 의미입니다.엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 저장합니다.영속성 컨텍스트는 엔티티 매니저를 생성할때 만들어지면 엔티티 매니저를 통해 영속성 컨텍스트에 접근, 관리 할수 있습니다.엔티티의 생명주기 (Life Cycle of Entity)비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태영속(managed) : 영속성 컨텍스트에 저장된 상태준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed) : 삭제된 상태비영속엔티티 객체를 생성한 상태로 순수한 객체 상태이므로 영속성 컨텍스트나 데..

Java 2024.05.16

Java String Constant Pool

String a = "Hello World";String b = new String("Hello World");String c = "Hello World"; 본 내용으로 들어가기 전에 위 코드를 보자.여기서 a,b 각 문자열 선언 방식의 차이는 무엇일까?또한 a,b는 같은 객체일까? 아닐까?위 질문에 나는 a,b 객체 선언의 차이 그리고 a,c가 같은 객체인지 아닌지 확답을 하지 못하였다.아래 내용을 읽으면 알겠지만 위 질문에 대한 대답은 a,c는 문자열 리터럴 선언, b는 new 연산자를 이용한 문자열 인스턴스 선언이다.그리고 a,c는 같은 문자열 리터럴을 가지고 있기 때문에 메모리 내에서 한번만 선언되고 이를 공유 하기 때문에 같은 객체라고 이야기 할수 있다.String Constant PoolJav..

Java 2024.05.16

JPA Persistence.xml 설정

persistence.xml 설정JPA는 persistence.xml을 사용하여 필요한 설정 정보를 관리합니다.이 설정파일이 META-INF/persistence.xml 클래스 패스 경로에 있으면 별도의 설정없이 JPA가 인식할수 있습니다.  hellojpa.Member   설정파일은 persistence로 시작합니다 . 이곳에 XML 네임스페이스와 사용할 버전을 지정합니다.  JPA 설정은 영속성 유닛(persistence-unit)이라는것부터 시작하는데 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다.영속성 유닛에는 고유한 이름을 부여해야합니다 여기서는 jpabook이라는 이름을 사용했습니다.JPA 표준 속성javax.persistenc..

Java 2024.05.15

JPA(Java Persistence API)란?

JPA?Java Persistence API자바 진영의 ORM 표준 ORM?Object-relational mapping(객체 관계 매핑)객체는 객체대로 설계관계형 데이터 베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 객체와 테이블을 매핑하여 패러다임의 불일치를 해결합니다.대중적인 언어에는 대부분 ORM 기술이 존재 패러다임의 불일치 객체지향 프로그래밍은 추상화, 캡슐화,상속성,다형성 등의 시스템의 복잡성을 제어 할수 있는 다양한 장치들을 제공합니다.관계형 데이터베이스는 데이터 중심으로 구조화, 집합적인 사고가 필요하며 객체지향 프로그래밍에서 제공하는 추상화, 상속성등의 개념이 존재하지 않습니다.그래서 패러다임의 차이 즉 패러다임 불일치 문제가 발생합니다.이를 해결하기위해서 개발자는 복..

Java 2024.05.15

Concurrent Collection의 정의와 종류

Concurrent Collection에 대해 정리가 필요할거같아 작성하였습니다.Concurrent Collection이란?Concurrent Collectioin은 Java5때 Thread Pool과 같이 도입된 Collection이며 다중 스레드 환경에서 발생할 수 있는 경합 조건 및 동기화 문제를 해결하기 위해 설계되었으며, java.util.concurrent 패키지 내에 포함되어 있습니다.Concurrent Collection의 종류Concurrent Collection의 종류는 대략적으로 다음과 같습니다.CopyOnWriteArrayListConcurrentHashMapConcurrentLinkedQueueLinkedBlockingQueueLinkedBlockingDequeConcurrentS..

Java 2024.05.15

Java Stream(스트림) (4) 단말 연산

단말연산은 처리한 스트림을 결과로 만들어주는 연산으로써 아래와 같은 종류들이 있습니다.forEach()forEach 작업은 해당 스트림을 순회합니다.하지만 forEach 메소드는 병렬 스트림을 사용하였을때 순서를 보장할수 없기 때문에 순서대로 순회하려면 forEachOrdered 메소드를 사용해야합니다. 예제 코드Stream stream = Stream.of("apple","banana","cat","dog");stream.forEach(System.out::println);collect()collect 연산은 인수로 전달되는 Collectors 객체에 구현된 방법대로 스트림의 요소를 수집합니다.Collectors 클래스에 여러방법이 클래스메소드로 정의되어 있어 원하는 방식에 따라 사용이 가능합니다.그외..

Java 2024.05.15

Java Stream(스트림) (3) 중간 연산

생성된 스트림을 필터링하거나 원하는 형태로 가공하는 연산입니다.중간 연산의 특징중 하나로 중간 연산의 결과값은 스트림을 반환하기 때문에 이어서 호출하는 메소드 체이닝이 가능합니다.또한 중간연산은 전에 언급했듯이 성능을 위하여 지연 연산이기 때문에 모든 중간 연산을 합친 다음 합친 연산을 마지막으로 처리합니다.skip()Skip 메소드는 스트림내의 첫번째 인자부터 설정한 n개의 인자를 제외한 나머지를 반환합니다.Stream skip(long n) 예제코드//1IntStream stream = Intstream.rangeClose(1,5);//12345stream.skip(2).forEach(System.out::print); // 345//2Stream stream = Arrays.stream(new St..

Java 2024.05.15

Java Stream(스트림) (2) 생성

기본적으로 스트림 API는 컬렉션, 배열, 파일, 비어있는 스트림등 다양한 데이터 소스에서 생성이 가능합니다.컬렉션(Collection)컬렉션 타입(Collection, List, Set)은 내장된 stream 메소드를 이용하여 스트림을 생성할수 있습니다.List list = Arrays.asList("apple","banana","cat","dog");// of()메소드 : 자바 9부터 추가됨// List list = List.of("apple","banana","cat","dog"); Stream stream = list.stream();배열(Array)Arrays 클래스의 stream 메소드 또한 배열을 통해 스트림을 생성해줍니다.Arrays.stream(T[] arr);//매개 변수로 온 배열의 ..

Java 2024.05.15

Java Stream(스트림) (1) 특징

Stream?Java8에서 부터 지원하는 Stream은 다양한 데이터 소스 즉 배열이나 컬렉션(List, Map,Set)으로 원하는 값을 얻을때 요소들을 하나씩 참조하면서 반복적인 처리를 할수 있게 합니다. 그렇게 되면 복잡한 로직이나 코드를 가진 경우에 불필요한 for이나 if문들을 쓰지 않고 깔끔하게 처리가능하게 됩니다.Stream의 특징Stream은 데이터소스로부터 데이터를 읽기만할뿐 기존 데이터를 변경하지 않습니다.Stream은 Iterator처럼 일회용입니다. 최종연산 즉 결과값을 반환후에는 스트림이 닫혀 스트림을 사용할려고 하면 에러가 뜨게 됩니다. 사용할려면 다시 스트림을 생성해야 합니다.최종 연산 전까지 중간 연산이 수행되지 않고 지연됩니다.Stream의 구조Stream은 생성 - 가공 -..

Java 2024.05.15

throw(예외발생) throws(예외처리)

- throwthrow는 예외를 강제로 발생시킬때 사용합니다. 예를 들면public class test{ public static void main(String[] args){ try{ throw new Exception(); // 예외 발생 }catch (Exception e){ // 예외 처리 코드 System.out.println(e); } }}   위의 코드는 메인함수를 들어갈때 throw을 써서 생성한 Exception객체를 강제로 발생시켰습니다.Exception이 강제로 발생하였기 때문에 위와 같이 catch문에서 발생한 예외을 출력하게 됩니다. - throwsthrows도 예외를 처리할때 사용하는데요throws는 발생한 예외를 상위 메소드로 ..

Java 2024.05.15
반응형