본문 바로가기

분류 전체보기278

String, StringBuffer, StringBuilder 비교 mutable immutable 동기화 지원, thread-safe StringBuffer String 동기화 지원 안 함 StringBuilder String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스이다. 하지만 각각 다른 특성을 갖고 있다. 먼저, String은 불변(immutable) 속성을 가진다. '불변'이란 메모리의 한 공간에 처음 값이 할당되고 나면 변하지 않음을 뜻한다. 그렇다고 한 번 할당한 변수에 다시 할당한다고 예외나 오류가 발생하지 않는다. 이때는 새로운 값을 가진 객체를 새로 생성하고 그 객체를 가리키게 된다. 처음에 생성된 객체는 힙 영역에 남아 있다가 가비지 컬렉션의 대상이 된다. 값을 할당할 때마다 새로운 객체가 생성되므로, Strin.. 2022. 7. 24.
[20220710] 개발자 일기 프로그래밍이란 건 결국 누군가가 만들어 놓은 것을 제대로 이해해서 필요에 맞게 잘 쓰는 것이다. 우리가 다른 사람이 만들어 놓은 물건을 쓰는 방법을 알기 위해서는 만든 사람이 적어 놓은 설명서를 읽는 것이 가장 적절할 것이다. 그래야 그 사람이 이 물건을 만든 의도가 무엇인지 어떻게 쓰일 것이라 생각하고 만든 것인지 알 수 있을 테니까 말이다. 어떤 가전제품을 샀을 때 설명서를 읽는 것이 안전하고 제대로 그 제품을 사용하기 위한 방법인 것과 동일하다. 그런 의미에서 좋은 프로그래머가 되기 위해서는 남이 만들어 놓은 코드나 라이브러리에 대한 레퍼런스를 읽은 것이 반드시 필요하다고 본다. 한편, 프로그래머와 비슷하게 개발자라는 명칭도 있다. 남들이 만들어 놓은 코드를 가져다 쓰는 것 뿐만 아니라 코드를 직접.. 2022. 7. 10.
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.
728x90