Programming-[Backend] (421) 썸네일형 리스트형 [자바 기초] 2. 자바의 동작원리 : 클래스 로딩과 JVM 메모리 지난 글에서 우리가 작성한 소스 코드는 javac 컴파일러에 의해서 바이트코드로 변환된다고 했다. 이것이 .class 확장자를 갖는 파일이며 이 파일들이 classLoader에 의해 JVM(Java Virtual Machine)에 로딩된다. 이번 글에서는 클래스가 로딩되는 JVM 메모리의 구성과 과정에 대해서 이해해본다. 1. Loading, Memory의 의미 Load 의 의미 classLoader를 검색해보면 클래스 파일들을 로딩하는 역할을 한다고 나와있다. 그런데 도대체 로딩이 무엇인지 설명하는 글을 찾기가 어렵다. 컴파일된 파일들을 로드한다는 것이 무슨 의미일까? 클래스 파일을 로드한다는 것은 프로그램에서 클래스 파일을 이용할 수 있도록 특정 메모리 영역에 클래스 파일의 정보를 저장하는 것을 의미.. [자바 기초] 1. 자바의 동작원리 : 프로그래밍의 동작 원리 1. 자바 개요 자바는 1996년에 JDK 1.0으로 최초 출시되었다. 원래는 다양한 환경에서 작동하는 프로그래밍 언어를 만들기 위해서 고안되었으며, 가전제품 내 탑재되기 위해 개발되었다고 한다. 자바의 특징 중 가장 중요한 점은 JVM(Java Virtual Machine, 자바 실행환경)에서 동작한다는 점이다. 이 덕분에 자바는 운영체제(OS)에 호환되는 JVM만 있다면 어떤 OS에서도 동작이 가능하다. 2. 자바 코드 실행 과정 자바 코드의 실행 과정은 아래 그림으로 요약된다. 여기서 우선 JAVA Compiler가 작동하는 원리에 대해서 이번 글에서 자세히 알아본다. 3. 컴파일 : Java Source -> Java Byte Code 사용자가 java 환경에서 작성하는 코드의 확장자는 .java.. [Querydsl][작성중] 6. 실무 활용 - 사용자 정의 Repository 1. 사용자 정의 Repository Spring Data Jpa 등에서 제공하지 않는 querydsl을 적용한 sql문 작성을 위해서는 사용자 정의 레포지토리가 필요하다. 강의 자료에 따르면 다음과 같이 구성하면 된다. 이 방식은 기존에 작성해둔 MemberRepository interface 를 계속 사용하겠다는 의미가 된다. 코드로 보면 아래와 같다. MemberRepositoryCustom 1 2 3 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } Colored by Color Scripter cs Custom 인터페이스를 상속받는 구현체인 MemberRepositoryImpl.clas.. [Querydsl] 5. 중급 문법 - 벌크연산, SQL function, 동적 검색 적용 API 개발해보기 1. 벌크연산 JPA 기본에서 JPQL문의 createQuery 뒤에 .executeUpdate() 구문을 넣어주면 벌크 연산이 가능하다고 배웠었다. 벌크 연산 후 em.flush, em.clear를 실행하거나 spring data jpa에서는 @Modifying을 적용해서 영속성 컨텍스트가 동기화되도록 만들어줘야 한다는 것도 배웠다. (https://whitepro.tistory.com/439) querydsl에서는 .execute()를 넣어주면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 @Test public void bulkUpdate() { //28살 이하의 member1, member2의 이름이 "비회원"으로 변경 long count = jpaQueryFactory .update(m.. [TIL][링크] MapStruct 라이브러리 - @AfterMapping org.mapstruct 에서는 @AfterMapping 어노테이션을 지원한다. 해당 기능을 이용하면 데이터 전달 오브젝트인 DTO에서, 또는 DTO로 의 mapping이 일어난 후 어떤 메서드가 자동으로 실행되도록 할 수 있다. Mapper 클래스에서 @AfterMapping으로 mapping후 특정 메서드가 작동되도록 선언한다. 사용자로부터 입력받지 않은 값, 또는 서버에서 굳이 복잡한 로직을 거치지 않고 간단한 값을 클라이언트에 전달해주고 싶을 때 유용하게 사용할 수 있다. 예시코드 1 2 3 4 5 6 7 8 @Mapper(componentModel = "spring") public abstract class XxxPoToDtoMapper implements 제네릭으로 정의한 Mapper 인터페이.. [TIL][링크] messageSource application.yml 설정 옵션 지식 MessageSource와 관련된 설정들을 application.yml 파일에 작성할 수 있습니다. ( 참고 ) key 기본값 설명 spring.messages.always-use-message-format false MessasgeFormat을 전체 메시지에 적용할 것인지 여부 spring.messages.basename messages message 파일을 여러개 사용할 경우 콤마로 구분해서 여러개의 basename을 설정할 수 있다. spring.messages.cache-duration 캐시 주기 설정, 기본 값 forever spring.messages.encoding UTF-8 인코딩 방식 spring.messages.fallback-to-system-locale true 감지된 loca.. [Querydsl] 4. 중급 문법 - Projections, BooleanBuilder 1. 특정 DTO로 원하는 필드값만 가져오기 복습겸 JPQL로 원하는 필드값만 가져오는 것을 연습한다. MemberDto를 만들고 member.username, member.age 값을 가져와본다. 순수 JPA에서 JPQL로 Dto 조회 select 절에 new Operator를 사용해서 MemberDto를 가져올 수 있도록 작성한다. 특이한 점은 해당 Dto가 있는 패키지 위치를 전부 작성해야된다는 점이고, 타입은 MemberDto.class로 가져오면서도 from절은 Member 엔티티로 지정하고, MemberDto의 필드값도 이 엔티티 기반으로 m.username, m.age 로 작성해준다는 점이다. MemberDto.class 생성자가 반드시 있어야 한다. 1 2 3 4 5 6 7 @Data @A.. [Querydsl]3. 기본 문법 - 서브쿼리, Case, 상수 문자 더하기 1. 서브쿼리 서브 쿼리의 필요성과 SQL 사용 권장 사항 서브쿼리를 사용하면 SQL의 결과를 한 번에 깔끔하게 가져올 수 있다. 그러나 SQL로 모든 데이터를 한번에 가져오고, 깔끔하게 정리까지 할려는 것은 과한 측면이 있다. SQL문 하나에 모든 데이터를 가져오도록 하지말고, 작은 SQL문으로 쪼개어 애플리케이션이나 화면단에서 데이터를 합치자. 너무 방대한 쿼리문을 작성하는 것보다 여러 개의 의미있는 SQL문을 작성하는 것이 재사용성과 가독성을 높이는데 도움을 줄 수 있다. 다만, 성능이 매우 중요하고 실시간으로 데이터를 빠르게 받아와야 하는 경우에는 쿼리 횟수를 줄여서 성능을 확보하는 것이 중요할 수도 있다. raw 데이터를 가져오는 방식으로 SQL문을 작성해야한다. SQL문에서 제공하는 기본적인 .. 이전 1 ··· 33 34 35 36 37 38 39 ··· 53 다음