본문 바로가기

IT 공부104

폰 노이만 구조의 혁신 폰 노이만 이전에도 컴퓨터는 있었다. 컴퓨터란 정보를 저장하고 처리하는 장치다. 물론 이 정의를 일반화하여 고대 중국의 주판을 컴퓨터라 할 수도 있다. 하지만 이 글의 논의에서 말하는 컴퓨터는 전자 컴퓨터를 말한다. 이런 관점에서 봤을 때, 최초의 컴퓨터는 존 모클리와 존 애커트가 1940년대에 개발한 애니악(ENIAC)이다. 문제는 에니악이 우리가 일반적으로 생각하는 범용 컴퓨터가 아니라는 점에 있었다. 이 때문에 에니악을 최초의 컴퓨터로 볼 수 없다는 시각이 현재는 주류의 의견이다. 우리가 컴퓨터에게 시키는 일은 알고리즘(계산 절차)을 통해 다양한 데이터 입력값에 대한 출력값을 얻는 것이다. 애니악은 철저하게 수소폭탄 궤적을 위한 알고리즘만을 수행할 수 있었다. 다양한 입력값에 해당하는 수소폭탄의 궤.. 2024. 3. 5.
[JPA] - 지연 로딩이어도 연관관계의 엔티티가 Null은 아니다. 1. 문제 의식 지연 로딩(링크)이 설정된 엔티티를 가져오는 경우,Transaction 범위 내에서 연관관계에 있는 엔티티를 구체적으로 요청하지 않는 이상 내부 엔티티 로딩은 지연된다. 예를 들어, 아래의 엔티티가 있다. @Entity public class Reply { @Id @GeneratedValue(GenerationType.INDENTITY) private Long rno; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "board_bno") priate Board board; } 이 엔티티를 가져오는 아래의 코드에서는 Reply 엔티티 내부의 Board 객체는 지연 로딩으로 설정되었으므로 DB처리가 되지 않을 것이다. public class .. 2024. 1. 29.
[Model Mapper] - DTO와 Entity 변환 시 내부에 객체를 매핑하고 싶을 때 Model Mapper Deep 매핑 방법?? MVC 패턴에서 컨트롤러와 뷰, 모델 사이에는 DTO라는 데이터 박스를 사용해 데이터를 한꺼번에 전달한다. 이는 컨트롤러와 서비스에서도 마찬가지인데, 이렇게 해야 웹 레이어와 서비스 내부(도 linocraft.tistory.com 전에 품었던 의문을 해결했다. 결론적으로 Model Mapper는 내부의 객체까지 전부 자동으로 매핑해준다. 그러나 여기에는 두 가지 조건이 있는 것으로 확인했다. ( ※ Entity 클래스에는 절대 setter를 쓰지 않아야 한다. setter를 쓰지 않아도 잘 동작하며, 논리적으로도 엔티티는 DB에서 가져온 시점에서 불변이어야 앞뒤가 맞다. service 단에서 엔티티의 내부 값을 setter를 통해 자유롭게 변동하는 것을 허용.. 2024. 1. 29.
[스프링] - redirectAttribute.addFlashAttribute() 동작 원리 (feat. 쿠키와 세션) 1. addFlashAttirbute()의 특이한 점 스프링에서 아래와 같은 addFlashAttribute() 코드를 통해 일시적으로 데이터를 전달할 수 있다. @GetMapping("/register") public void register() { } @PostMapping("/register") public void register(@Valid RegisterDTO registerDTO, BindingResult bindingResult, RedirectAttribute redirectAttribute) { if ( bindingResult.hasErrors ) { redirectAttribute.addFlashAttribute("errors", bindingResult.getAllErrors()).. 2024. 1. 26.