Develop/Java 10

[JAVA] JVM이란? 개념과 구조

Java Virtual Machine의 줄임말로, 자바 프로그램을 실행하기 위한 가상 환경이다.Java 는 OS에 종속적이지 않다는 특징을 가지고 있는데 OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. >> 이것이 바로 JVM (즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터) 자바 프로그램은 JVM 위에서 실행되며, JVM은 하드웨어와 운영체제에 독립적인 실행 환경을 제공한다. JVM은 자바 바이트코드를 읽고 이를 실행하며, 이를 통해 자바가 플랫폼 독립성을 갖게 된다.  주요 기능바이트코드 실행: 자바 컴파일러가 생성한 바이트코드를 실행하여 자바 프로그램이 실행될 수 있도록 한다.메모리 관리: JVM은 메모리를 효율적..

Develop/Java 2024.10.16

JDBC(Java Database Connectivity)란 무엇인가?

💻JDBC란?JDBC(Java Database Connectivity)는 Java기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트 하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다.쉽게 말하자면 Java언어와 DB를 연결해주는 통로같은것이라고 보면 된다. JDBC를 사용하면 Java 코드로 데이터베이스에 연결하고, 데이터를 가져오거나 저장할 수 있다. 💻JDBC의 동작 흐름JAVA 애플리케이션 --> JDBC API --> JDBC 드라이버 --> 데이터베이스

Develop/Java 2024.07.29

Page를 List로 Controller에서 간단히 바꾸기

Page pageList = bannerListService.operate(pageable, modelMapper.map(paramDto, BannerCondition.class)).map(banner -> modelMapper.map(banner, BannerDto.class));model.addAttribute("banner", pageList);model.addAttribute("bannerTopList", pageList.getContent()); 이렇게 .getContent를 하면 리스트형식으로 바뀜그러면 html에서 list.size()사용 가능하고 [0] 이렇게 원하는 순서의 배열을 가져올 수 있음

Develop/Java 2024.07.22

enums 사용할 경우에 굳이 each 돌리지 않고 해당 값의 desc 간단하게 불러오기

DB에 있는 해당 데이터와 Enums의 값이 일치할 경우에 해당 Enums의 desc 값을 text로 불러오고자 할 때 간단한 코드로 Thymeleaf를 사용하여 완성시켜 보았다.   이렇게 Enums를 each로 루프 돌려서 하나씩 확인해보는 방법도 있지만   이렇게 .ValueOf를 사용하여 데이터와 값을 비교해서 해당 Enums의 desc를 불러와서 간단하게 텍스트로 지정 가능하다.

Develop/Java 2024.07.22

게시판 상세페이지에서 이전글, 다음글 구현하기

게시판 상세페이지에서 이전글과 다음글을 구현하는 경우가 굉장히 많았는데 그걸 한번 정리해보고 싶어졌다. -  Controller@Controller@RequiredArgsConstructorpublic class MediaViewController { private final MediaViewService mediaSubViewService; private final ModelMapper modelMapper; private final MediaRepo mediaRepo; @GetMapping("/media/{id}") String operate(@PathVariable(required = true) Long id, Model model, @ModelAttribute("paramDto") ..

Develop/Java 2024.07.02

[Thymeleaf] temporals.format 으로 날짜 설정하기

우선, 프로젝트를 하면서 자주 temporals.format에 대한 정확한 역할을 확인하다가 타임리프의 유틸리티 객체들 중에 날짜 유틸리티 객체인 #temporals에 대해서 알아보고 싶어졌다. - 날짜 유틸리티 객체인 $temporals가 사용된 예시 코드 - temporals.format은 Java의 날짜 및 시간 API인 java.time 패키지에서 날짜와 시간을 포맷팅하는 데 사용되는 메서드이다.이 메서드는 java.time.format.DateTimeFormatter 클래스를 사용하여 TemporalAccessor(예: LocalDate, LocalDateTime, ZonedDateTime 등) 객체를 문자열로 포맷팅 하게된다. # 주요 클래스와 인터페이스 TemporalAccessor: 날짜 ..

Develop/Java 2024.06.28

상시 게시글을 리스트의 상단으로 올리기

이걸 위해서 생각했던 방법  1. html에서 작업한다2. controller에서 애초에 불러오는 리스트에서 상시게시글을 상위로한 리스트롤 뽑아온다 2번을 해야한다고 생각했고,그에 따른 방법이 두가지가 있었는데1. controller에서 중요항목과 일반항목을 따로 List로 가져와서 중요항목에 일반항목을 addAll하는 방법 // 중요 항목을 먼저 가져옴List importantItems = noticeSubListService.operate(pageable, modelMapper.map(paramDto, NoticeSubCondition.class)) .stream() .filter(notice -> "Y".equals(notice.getImportance())) ..

Develop/Java 2024.06.20

JAVA에서 메모리 주소를 직접 확인하는게 가능할까?

Java에서 객체의 메모리 주소를 직접 확인하는 것은 언어 자체에서는 제공하지 않는 기능이다. > 그러나, 객체의 해시 코드(hash code)를 통해 간접적으로 객체를 식별할 수 있다. 해시 코드는 객체의 메모리 주소와 관련이 있지만, 직접적으로 메모리 주소를 나타내지는 않는다. 객체의 해시 코드 확인System.identityHashCode(Object x) 메서드는 객체의 해시 코드를 반환한다. 이 값은 객체의 메모리 주소와 밀접한 관련이 있지만, 직접적인 메모리 주소는 아니라고 볼 수 있다. 그래도 이를 통해 두 객체가 동일한지 여부를 간접적으로 확인이 가능하다. System.out.println("### dto.getCreatedById() hash code: " + System.identity..

Develop/Java 2024.06.17

String 값을 equals를 사용하여 비교하기 ('=='를 쓰지 않는 이유)

System.out.println를 사용하여 값 두가지를 찍어 봤는데 값의 내용이 동일했지만 '=='을 사용했을때 제대로 작동하지 않았다. >> Stirng 타입은 값을 비교해줄때  equals를 사용해야한다. 왜냐면 메모리까지 비교를 하기 때문이다.dto.getCreatedById().getClass();memberDto.getMemberId().getClass();if(dto.getCreatedById() == null || memberDto.getMemberId() == null || !dto.getCreatedById().equals(memberDto.getMemberId())) { commonUtil.getJsonScriptMessage(messageUtil.getMessage("opera..

Develop/Java 2024.06.17