일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체지향 쿼리 언어
- Github Actions Cache
- 이펙티브자바
- cicd
- JPQL
- Spring Batch
- 자바 ORM 표준 JPA 프로그래밍
- 아이템 23
- 아이템29
- Docker cache
- Docker Layer
- 아이템 28
- 아이템 22
- Immutable Object
- criteriaquery
- 아이템 26
- ddd
- java
- Domain Driven Design
- 일ㅊ
- 아이템30
- 아이템 24
- GitHub Actions
- jdbc
- 아이템31
- 아이템 25
- JPA
- 최범균
- 아이템 27
- 도메인 주도 개발 시작하기
- Today
- Total
목록2024/06 (13)
코딩은 마라톤
요새 인프런에서 토비의 스프링부트 이해와 원리를 듣고 있는데 내가 스프링부트로 개발을 하고 있지만 서블릿, 디스패처 서블릿, 스프링 컨테이너, 빈 등에 대해 잘 모른다는 것을 알게 되었다.그중 서블릿과 서블릿 컨테이너는 거의 아는게 없었기 때문에 이번 기회에 정리하고자 한다. 서블릿 (Servlet)서블릿이란 무엇일까?서블릿에 대해 알아보기 전에 웹 서버, 웹 애플리케이션 서버(WAS)를 알아봅시다. 웹 서버 (Web Server)웹사이트를 제공할 수 있게 서버로 만들어주는 서비스클라이언트가 특정 주소를 입력 시 특정 화면을 브라우저에서 출력해주는 역할정적인 웹 사이트를 제공웹 애플리케이션 서버 (Web Application Server)자바, JSP 등으로 만든 웹 또는 API 애플리케이션을 실행할 ..
회사에서 ElasticSearch 조회할 때 CriteriaQuery 만들어봤는데 JPA에도 Criteria 쿼리가 있다니.. 신기방기 CriteriaJPQL을 자바 코드로 작성할 수 있게 도와주는 빌더 클래스 API코드로 JPQL을 작성함으로써 컴파일 단계에서 문법 오류를 잡을 수 있고 동적 쿼리를 안전하게 생성 가능코드가 복잡하고 장황해서 직관적으로 이해하기 힘든 단점 기초//JPQL: select m from Member mCriteriaBuilder cb = em.getCriteriaBuilder(); //Criteria 쿼리 빌더 O//Criteria 생성, 반환 타입 지정CriteriaQuery cq = cb.createQuery(Member.class);Root m = cq.from(Memb..
경로 표현식경로표현식이란 .(점)을 찍어 객체 그래프를 탐색하는 것이다.select m.usernamefrom Member m join m.team t join m.orders owhere t.name = '팀A' 위 쿼리에서 m.username, m.team, m.orders, t.name 모두 경로 표현식을 사용한 예다. 용어 정리상태 필드 : 단순히 값을 저장하기 위한 필드 (필드 or 프로퍼티)연관 필드 : 연관관계를 위한 필드, 임베디드 타입 포함 (필드 or 프로퍼티)단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션경로 표현식과 특징상태 필드 경로 : 경로 탐색의 끝이다. ..
JPQL 소개JPQL(Java Persistence Query Language)은 엔티티 객체를 조회하는 객체지향 쿼리이다.테이블을 대상으로 쿼리하지 않고 엔티티 객체를 대상으로 쿼리한다.JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다.JPQL은 SQL보다 간결하다.기본 문법과 쿼리 APIJPQL은 SQL과 비슷하게 SELECT, UPDATE, DELETE 문을 사용할 수 있지만 INSERT는 없다.(엔티티 저장 시 EntityManager.persist() 메서드 사용하기 때문이다.) SELECT 문예시SELECT m FROM Member AS m where m.username = ’Hello' 대소문자 구분엔티티와 속성은 대소문자를 구분하지만, SELECT, FROM과 같은 JPQL..
지금 4일째? 블로그를 작성하지 않고 있습니다..그 말은 즉슨 책을 4일 동안, 총 12 아이템이나 놓쳐버린거죠.. 사실 지금 이펙티브 자바를 읽으면서 고민 거리가 생겼습니다.이펙티브 자바를 읽으면서 신기한 주제도 많지만 생각보다 많이 어렵습니다.. (제가 모르는 걸 더 찾고 공부해야하는데 하지 않음)책만 읽고 블로그를 쓴다고 지식이 느는 게 아닌데 말이죠,,,학습이라는 게 "배울 학 + 익힐 습" 인데 저는 배움만 실천하고 있습니다.. 회사를 다니면서 궁금한게 많이 생깁니다.예를 들면, 조회하는 클래스(메서드)에서 @Transactional(readonly=true)로 하면 성능상 이점이 생기는 이유라던가...Optional 객체를 스트림할 때 flatMap()을 통해 꺼내올 수 있다던가...왜 실무에..
아이템 29. 이왕이면 제네릭 타입으로 만들라Object 기반 스택 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { elements[size++] = e; } public Object pop() { if (size == 0) { throw..
5장 제네릭자바 5부터 사용 가능제네릭을 사용하면 컴파일러에게 타입을 알려주어 더 안전하고 명확한 프로그램을 만들어 준다. 아이템 26. 로 타입은 사용하지 마라제네릭 타입클래스, 인터페이스 선언에 타입 매개변수가 쓰인 것List 인터페이스는 원소의 타입을 나타내는 타입 매개변수 E를 받는다. 제네릭 타입은 일련의 매개변수화 타입(parameterized type)을 정의한다.클래스(혹은 인터페이스) 이름에, 꺾쇠괄호 안에 실제 타입 매개변수 나열ex) List : String이 정규 타입 매개변수 E에 해당하는 실제 타입 매개변수 로 타입(raw type)제네릭 타입에서 타입 매개변수를 전혀 사용하지 않는 타입타입 선언에서 제네릭 타입 정보가 전부 지워진 것처럼 동작private final List l..
오늘은(6월 6일) 나라를 위해 희생한 이들을 기리는 국가추념일입니다. 목숨을 바친 모든 선열들에 의해 저희가 자유롭게 살 수 있습니다.항상 감사합니다. 아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라소스파일 하나에 톱레벨 클래스를 여러개 선언하더라도 자바 컴파일러는 문제를 일으키지 않는다.여러개 선언하는 일은 이득이 없고 심각한 위험이 생길 수 있다. public class Main { public static void main(String[] args) { System.out.println(BREAD.NAME + DRINK.NAME); }}Bread.javaclass Bread { static final String NAME = "소금빵";}class Drink { s..