☕Java103 String, StringBuffer, StringBuilder 비교 mutable immutable 동기화 지원, thread-safe StringBuffer String 동기화 지원 안 함 StringBuilder String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스이다. 하지만 각각 다른 특성을 갖고 있다. 먼저, String은 불변(immutable) 속성을 가진다. '불변'이란 메모리의 한 공간에 처음 값이 할당되고 나면 변하지 않음을 뜻한다. 그렇다고 한 번 할당한 변수에 다시 할당한다고 예외나 오류가 발생하지 않는다. 이때는 새로운 값을 가진 객체를 새로 생성하고 그 객체를 가리키게 된다. 처음에 생성된 객체는 힙 영역에 남아 있다가 가비지 컬렉션의 대상이 된다. 값을 할당할 때마다 새로운 객체가 생성되므로, Strin.. 2022. 7. 24. QueryDSL 정리 JPA를 사용하면서 동적 쿼리를 위해 QueryDSL을 사용하기로 결정하면서 QueryDSL을 공부하기 시작했다. 공부한 내용을 간단히 정리해본다. QueryDSL은 JPA 사용 시 SQL처럼 쿼리를 작성할 수 있게 해주고 복잡한 쿼리와 동적 쿼리를 쉽게 사용할 수 있도록 도와주는 프레임워크이다. 런타임이 아니라 컴파일 타임에 오류를 잡을 수 있다. QueryDSL 사용시 'Q + 엔티티 이름' 형태의 Q class가 생성된다. Spring DataJpa와 다르게 Repository 클래스를 직접 만들어 사용한다. Repository 클래스에는 EntityManager와 QueryFactory를 주입하여 사용한다. 쿼리 중 where 조건 절 사용 시 Predicate를 사용한다. 2022. 7. 3. SOLID 원칙 객체 지향 언어로 프로그래밍을 하는 사람이라면 SOLID 원칙을 들어본 적이 있을 것이다. SRP, OCP, LSP, ISP, DIP 다섯 가지 원칙의 앞글자를 따서 부르는 것인데, 설명들은 많이 있지만 실제 프로그래밍을 사용할 때 기억하고 그 원칙을 지키려면 잘 기억하고 있어야 할 것 같아서 짧게 정리해보려고 한다. 각 원칙을 한 문장 내외로 축약할 것이다. SRP(Single Resposibilitiy Principle, 단일 책임 원칙): 하나의 클래스와 그것을 구성하는 각각의 메서드들은 각각 하나의 책임을 가져야 한다. OCP(Open-Close principle, 열림 닫힘 원칙): 확장은 가능하지만 수정은 지양한다.(확장에 열려 있고 수정에 닫혀 있다. LSP(Liskov Substitutio.. 2022. 6. 26. web.xml이란? 앞서 자바 웹 애플리케이션 구조를 살펴보았다.(https://lifewithcoding.tistory.com/207) 웹 애플리케이션 구조에서 보았던 web.xml 파일에 대해 자세히 알아보자. 자바 웹 애플리케이션을 빌드하여 패키징한 war 파일 내부를 보면 web.xml 파일이 존재한다. 이 web.xml 파일은 배포 기술서(Deployment Descriptor)라고도 하는데, 웹 애플리케이션을 실행할 때 필요한 설정들을 담고 있다. web.xml에 서블릿, 필터, 리스너를 등록할 수 있다. 웹 애플리케이션은 요청이 들어오면 그 요청을 수행할 컨트롤러를 찾아 작업을 수행하도록 하고 그 결과를 응답으로 전송한다. 그 과정에서 어떤 URI로 요청이 들어왔을 때 어느 서블릿에게 요청을 전달할 것인지 매핑.. 2022. 6. 19. 이전 1 2 3 4 5 6 7 8 ··· 26 다음 728x90