전체 글 302

[Spring] Entity 의 상태

* 비영속쉽게 말하자면 new 연산자를 통해 인스턴스화 된 Entity 객체를 의미아직 영속성 컨텍스트에 저장되지 않았기 때문에 JPA의 관리를 받지 않음비영속 상태는 JPA가 관리하지 못하기 때문에 해당 객체의 데이터를 변경해도 변경 감지가 이루어지지 않음* 영속 persist(entity) : 비영속 Entity를 EntityManager를 통해 영속성 컨텍스트에 저장하여 관리되고 있는 상태로 만듦비영속 상태는 JPA가 관리하지 못하기 때문에 해당 객체의 데이터를 변경해도 변경 감지가 이루어지지 않음* 준영속준영속 상태는 영속성 컨텍스트에 저장되어 관리되다가 분리된 상태를 의미 영속 상태에서 준영속 상태로 바꾸는 방법 detach(entity) : 특정 Entity만 준영속 상태로 전환합니다.영속성 ..

[Spring] 영속성 컨텍스트의 기능

영속성 컨텍스트는 Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간 1차 캐시영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있음.우리가 저장하는 Entity 객체들이 1차 캐시 즉, 캐시 저장소에 저장된다고 생각하시면 됨캐시 저장소는 Map 자료구조 형태.key에는 @Id로 매핑한 기본 키 즉, 식별자 값 저장value에는 해당 Entity 클래스의 객체 저장영속성 컨텍스트는 캐시 저장소 Key에 저장한 식별자값을 사용하여 Entity 객체를 구분하고 관리Entity 저장em.persist(memo); 메서드가 호출되면 memo Entity 객체를 캐시 저장소에 저장Entity 조회em.find(Memo.class, 1); 호출 시 캐시 저장소를 확인 한 후 해당 값이 없다면?DB에 S..

[Spring] 영속성 컨텍스트, 트랜잭션

Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간 영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요EntityManager는 이름 그대로 Entity를 관리하는 관리자개발자들은 EntityManager를 사용해서 Entity를 저장하고 조회하고 수정하고 삭제할 수 있음EntityManager는 EntityManagerFactory를 통해 생성하여 사용할 수 있음 EntityManagerFactoryEntityManagerFactory는 일반적으로 DB 하나에 하나만 생성되어 애플리케이션이 동작하는 동안 사용됨EntityManagerFactory를 만들기 위해서는 DB에 대한 정보를 전달해야함정보를 전달하기 위해서는 /resources/META..

[Spring] Spring, Spring MVC, Spring 3 Layer

Spring은 자바 어플리케이션 개발을 도와주는 프레임워크  스프링 MVC는 동기식 요청-응답 웹 애플리케이션을 위한 프레임워크이며, 전통적인 웹 애플리케이션 개발에 사용스프링 Batch는 대규모 데이터 처리 작업을 위한 배치 프레임워크로, 실시간이 아닌 일괄 작업에 적합스프링 WebFlux는 비동기식 논블로킹 웹 애플리케이션을 위한 프레임워크로, 고성능, 고효율의 리액티브 애플리케이션을 개발하는 데 사용1. 스프링 MVC (Model-View-Controller)더보기목적: 전통적인 동기식 웹 애플리케이션 개발을 위한 프레임워크.아키텍처: 동기식 요청-응답 기반으로 동작. 클라이언트가 요청을 보내면 서버는 요청을 처리하고, 처리 결과를 클라이언트에 응답으로 보냅니다.주요 특징:전통적인 웹 개발에 많이 ..

[Spring] Ioc Container 와 Bean

빈 (Bean): Spring이 관리하는 객체Spring IoC 컨테이너: *Bean*을 모아둔 컨테이너 @Component 를 클래스 위에 붙여주면 첫 번째 대문자가 소문자로 바뀐 memoService 이름으로 Bean 저장됨  @AutowiredSpring IoC 컨테이너에 의해 관리되는 클래스에서만 가능합니다. 필드 위에 @Autowired   'Bean'을 주입할 때 사용할 메서드 위에 @Autowired객체의 불변성을 확보할 수 있기 때문에 일반적으로는 생성자를 사용하여 DI하는 것이 좋음set… Method를 만들고 @Autowired를 적용하여 DI 할 수도 있음생성자 선언이 1 개라면 생략 가능ApplicationContextApplicationContext는 BeanFactory등을 상속..

[Spring] Ioc (제어의 역전) 와 DI (의존성 주입)

IoC, DI는 객체지향의 SOLID 원칙 그리고 GoF 의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴 강하게 결합되어 있는 Consumer 와 Chicken코드는 정상적으로 작동하겠지만, Consumer 가 chicken 이 아니라 pizza 가 먹고싶다면 코드 수정이 불가피함 약하게 결합되어있는 Consumer 와 Chicken, Pizzainterface 다형성의 원리를 사용해서 고객이 어떤 음식을 요구하더라도 쉽게 대처할 수 있음.그럼 여기에 어떻게 주입할까?1. 필드에 직접 주입2. 메서드를 통한 주입3. 생성자를 통한 주입 필드에 직접 주입Food를 Consumer에 포함 시키고 Food에 필요한 객체를 주입받아 사용 메서드를 통한 주입set 메서드를 사용하여 필요한 객체를 주입받아 사용 ..

[Memo][Java] Timestamp, BIGINT, DATE()

sql type 에서int: 일반적으로 32비트 정수를 나타내며, 범위는 -2^31부터 2^31-1까지입니다. 이는 약 -21억에서 21억 사이의 숫자를 포함bigint: 64비트 정수를 나타내며, 훨씬 더 큰 숫자를 저장 ( Long 타입 저장 )type 선언 시 varchar 뒤에는 꼭 () 안에 크기를 넣어줘야함. 255 500 등import java.sql.Timestamp;this.createdDate = new Timestamp(System.currentTimeMillis());두 코드를 통해 현재 시간을 java 에서 저장시킬 수 있다.DATE(updated_date)는 updated_date 필드의 날짜 부분만 비교합니다. 이렇게 하면 시간 부분을 무시하고 날짜만 비교할 수 있습니다.

카테고리 없음 2024.08.16

[Spring] CRUD

DTO(Data Transfer Object) 데이터 전송 및 이동을 위해 생성되는 객체Client  에서 보내오는 데이터를 객체로 처리할 때 사용서버의 계층간의 이동에도 사용DB 와의 소통을 담당하는 java 클래스를 그대로 Client 에 반환하는 것이 아니라 DTO 로 한 번 변환 후 반환할 때 사용( Request 의 데이터 처리 담당 객체명은 RequestDto, Response 할 때 사용되는 객체는 ResponseDto )CREATEClient 에 데이터를 반환하고 Client 의 요청 데이터를 받아줄 MemoResponseDto, MemoRequestDto 클래스 생성 지금은 DB 연결을 하지 않았기 때문에 메모 데이터를 저장할 컬렉션 생성 READUPDATEDELETE

[Spring] PathVariable, RequestParam, ModelAttribute, RequestBody

Client (브라우저) 에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보내는 방식에는 여러 방식이 있다. 아래의 hello-request-form.html 을 우선 불러왔다. @PathVariable서버에 보내려는 데이터를 URL 경로에 추가해서 보낼 수 있다.데이터를 받기 위해서는 /star/{name}/age/{age} 이처럼 URL 경로에서 데이터를 받고자 하는 위치의 경로에 {data} 중괄호를 사용(@PathVariable String name, @PathVariable int age)그리고 해당 요청 메서드 파라미터에 @PathVariable 애너테이션과 함께 {name} 중괄호에 선언한 변수명과 변수타입을 선언하면 해당 경로의 데이터를 받아옴@RequestParamform 태그 GET..