일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JPA 공부
- 스프링 공부
- Axon framework
- 자바공부
- 코테공부
- nestjs
- DDD
- JPA공부
- nestjs스터디
- Kafka
- 플러터 공부
- nestjs공부
- 플러터 개발
- K8S
- querydsl
- Flutter
- 프로그래머스
- 스프링공부
- 자료구조공부
- JPA
- 기술공부
- 스프링
- 알고리즘공부
- 카프카
- 스프링부트공부
- 기술면접공부
- JPA예제
- 코테준비
- JPA스터디
- 스프링부트
- Today
- Total
목록분류 전체보기 (715)
DevBoi
영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. -특징 엔티티 매니저를 생성할때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. -이점 1차 캐시 영속성 컨텍스트에는 1차 캐시가 존재한다. 엔티티를 영속성 컨택스트에 저장하는 순간 1차캐시에 객체가 key,value값으로 저장된다. 엔티티 매니저가 값 을 조회할때 엔티티가 존재하는 경우 DB조회를 하지 않고, 바로 리턴해준다. 동일성 보장 영속성 컨택스트에서 꺼내온 객체는 동일성이 보장된다. 같은 엔티티를..
엔티티의 생명주기는 4가지가 있다. 1. 비영속 - 영속성 컨텍스트와 전혀관계가 없는 상태 - 객체를 생성만 한 상태 2. 영속상태 - 영속성 컨텍스트에 저장된 상태 - 엔티티가 영속성 컨텍스트에 의해 관리되는 상태 3. 준영속 상태 - 영속성 컨텍스트에 저장되었다가 분리된 상태 - 영속성 컨텍스트에서 지운 상태 - 준영속 상태에서는 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다.(Dirty Checking, Update Query) (이름 변경에 대한 Entity 데이터 변화를 감지한다. 1차 캐시의 snapshot이 다른것을 감지하면, update query 를 날린다.) 4. 삭제 상태 엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제한 상태이다.
1. ORM이란? Object Relational Mapping 의 약자로, 이름 그대로 객체와 관계형 데이터를 매핑하기 위한 기술이다. 객체와 관계형 데이터 베이스는 패러다임의 불일치가 존재할수 밖에없고, 해당 패러다임을 맞추려, 객체지향적 설계를 할수 없다. ORM은 이러한 문제를 해결한다. 2. JPA java persistence APi의 약자로, 자바 ORM 기술에 대한 API 표준 명세이다. 즉, 인터페이스 모음이다 이 인터페이스를 구현한 프레임워크가 하이버네이트이다. JPA는, 애플리케이션과 JDBC 사이에서 동작하며, JPA를 개발자가 사용하면, JPA 내부에서 JDBC API를 사용하여, SQL을 호출하여 DB와 통신한다. 3. 하이버네이트 JPA를 구현한 프레임워크 중 사실상 표준에 가..
함수형 프로그래밍으로 하게되면, 눈에 좀더 보기 편하고, 어떤 값들이 어떤 세팅을 주게 되는지를 편하게 볼수 있다는 장점이 있다. -Java 8에서 사용가능한 기술들이 있는데 아래와 같다. - 인터페이스의 디폴트 메소드 default 메소드를 사용하면, 인터페이스에서, 추상 메소드가 아닌 구현된 메소드를 사용할수 있다. public interface Calculator { public int plus(int i, int j); public int multiple(int i, int j); default int exec(int i, int j){ //default로 선언함으로 메소드를 구현할 수 있다. return i + j; } } - 메소드 레퍼런스, 생성자 레퍼런스 메소드 레퍼런스로 표현하는 것은 C..
스레드는 상태단계 들을 가지고 있다. 실행 대기 상태 : 아직 스케쥴링 되지 않아서, 실행을 기다리고 있는 상태 실행 상태 : 실행 대기 상태에 있는 스레드 중에서 스레드 스케쥴링으로 선택된 스레드가 CPU를 점유하고, run()메소드를 실행하는 상태 종료 상태 : run()메소드가 종료되어 더이상 실행할 코드가 없어져 스레드의 실행을 멈추는 것 일시 정지 상태 : 스레드가 실행할 수 없는 상태로 WAITING,TIMED_WAITING,BLOCKED 세가지 상태가 존재한다. 경우에 따라서, 스레드는 실행 대기 상태가 아닌, 일시정지 상태로 가기도한다. - Waiting : 다른 스레드가 통지할때까지 기다리는 상태 - Timed_waiting : 주어진 시간 동안 기다리는 상태, sleep,wait,joi..
1. Final 변수나 참조에 적용 가능하다. -변수인 경우, 값 변경이, 참조에 적용하면 다른 객체를 가르키는것이 불가하다 -메서드에 적용하면, 해당 메서드를 상속 받는 하위 클래스에서 오버라이딩이 불가하다.(사용은 가능하나, 변경은 불가 ) -클래스에 적용하면, 해당 클래스를 다른 클래스가 상속 받을 수 없다. 즉, final 클래스의 하위 클래스를 정의 할 수 없다. 2. Finally Finally는 try-catch 블록 뒤에 둘 수 있는 선택적인 블록인데, try-catch 문이 끝나기 전에 항상 꼭 실행되어야 하는 로직이 있을 경우 finally 절에 두면된다. 예외가 던져지더라도, 항상 실행될 코드를 지정하기 위해 사용된다. finally 블록은 try와 catch 블록이 전부 실행된 후,..
제네릭 : 클래스에서 사용할 타입을 외부에서 설정하는 것이다. 장점 : 컴파일 시점에, 잘못된 타입 사용을 미리 방지할 수 있다. (메소드,파라미터, 리턴타입등을 설정할 수 있다) 와일드 카드 : 해당 클래스에 대한 제한을 상속 관계까지 둘수있다. -? extends 상위타입 -? supper 하위타입 등등, 해당 상속관계의 클래스로 클래스타입을 설정할 수 있다.
직렬화는 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 자바 시스템에서도 사용할수 있도록 바이트 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 어울러서 이야기한다. 1.직렬화 직렬화란, 객체를 직렬화 하여, 전송 가능한 형태로 만드는 것이다. 객체들의 데이터를 연속적인 데이터로 변형하여, Stream을 통해, 데이터를 읽도록해준다. 객체들을 통째로 파일로 저장하거나 전송하고싶을때 사용한다. 2.역직렬화 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다. transient를 이용하면, 직렬화 대상에서 재외할수있다. SerialVersionUID 클래스..
1. String String은 불변 객체이다. 한번 값이 할당되면, 변하지 않고, 메모리를 추가적으로 점유하게 된다. 해당 String 변수에 대한 값을 변경한다고 다른 값을 넣게되면, 기본타입이 아니기때문에 값이 변경되는 것이 아니고, 참조하고있는 데이터의 주소가 달라질뿐 기존 가리키는 주소가 삭제되거나 변경되는 것은 아니다. 2.StringBuilder StringBuilder와 StringBuffer는 우선 String 과 다르게, append나 delete등 api를 사용하여, 동일 객체 내에서 문자열을 변경하는 것이 가능하게 해준다. 즉, 신규 객체를 생성하는 것이 아니고, 기존 객체의 값을 변경할수 있게 해준다. 따라서 문자열 연산이 빈번하게 발생된다면, 해당 두가지를 쓰는 것이 좋다. St..