분류 전체보기 (228) 썸네일형 리스트형 jpa 엔티티 매핑 정리 package hellojpa; import javax.persistence.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @Entity //@SequenceGenerator( // name = "MEMBER_SEQ_GENERATOR", // sequenceName = "MEMBER_SEQ", // initialValue = 1, allocationSize = 1 // allocationSize: 메모리상 미리 땡기는 사이즈. 디폴트는 50 //) //@TableGenerator( // name = "MEMBER_SEQ_GENERATOR", // table = "MY_SEQUENCES", // pk.. 나 : 개발할 때, 어떤경우엔 함수를 호출하고 어떤경우엔 service를 호출해야 할까? 나 : 개발할 때, 어떤경우엔 함수를 호출하고 어떤경우엔 service를 호출해야 할까? AI Assistant: 함수와 서비스 호출은 주로 작업의 적절성과 복잡성에 따라 결정됩니다. 함수 호출은 주로 다음과 같은 상황에서 사용됩니다: 유틸리티 기능: 날짜 형식화, 숫자 반올림, 문자열 가공등 간단하며 재사용 가능한 코드 조각인 경우 일반적으로 함수로 작성됩니다. 단순 계산 로직: 복잡한 비즈니스 로직이나 상태 변경 없이 입력에 대한 출력만을 계산하는 경우입니다. 서비스 호출은 아래와 같은 경우에 사용됩니다: 비즈니스 로직: 특정 비즈니스 요구사항을 충족하는 로직을 처리합니다. 예를 들어, 사용자 인증, 데이터베이스 트랜잭션 처리 등 복잡한 처리는 서비스 레이어에서 수행됩니다. 상태 변경: 특정한 상태(.. [자바] Stream의 match함수 예제(anyMatch, noneMatch, allMatch) 회사에서 개발하던 중 리스트의 데이터 모두 빈값("") 인경우..라는 조건이 필요하였다. 결론: !Arrays.stream(arr).allMatch(String::isEmpty) 물론 for문을 돌려도되지만 요즘 코드를 한줄로 줄이기에 재미가 들려서 이것저것 찾아보다가 stream의 allMatch라는 녀석을 이용하면 한줄로 표현할 수 있어서 매우 기분이좋아(?) 기록으로 남기려고한다. java.util.Stream에는 제목처럼 세 가지 match 함수가 있다. 그리고 이 세함수의 인자는 Predicate로 T타입을 입력받고, boolean을 출력한다. 다음예제를 통해 조금더 함수의 결과를 잘 알수 있다. public static void main(String[] args) { List list = ne.. 클린코드는 없다. 늘 고민이었다. 어딘가 소스가 깨끗하지 못하다는 인상을 받았다. 만족스럽지 못한 우리네업무코드를 보다 만족스럽고 바람직한 코드로 리팩터링하고싶었다. 많이 고민됐고, 의심스러웠고, 그리고 믿어왔다. 1. 코드가 지나치게 절자치향적이었다. 2. 익셉션에 대해 생각하기 어려웠다. 3. 형상관리에 어려움이 있었다. 4. 장애가 발생해도 적절히 대응하기 어려웠다. 5. 코드에 비즈니스(도메인)이 제대로 들어나지 않은 느낌을 받았다. 6. 네이밍에 대해 생각하기 어려웠다. 무엇보다도 변경에 어려움이 있다는 느낌을 받았고, 대부분이 그렇게 생각한다. 사실 다들 어느정도 알고있다. 스파게티코드란 단어를 실무에 써본적도 들어본적도 없지만 그게 뭔지 다들 알고있다. 나는 이문제를 OOP와 DDD가 해결해 줄 것이라는 오랜.. 기술부채와 개발자의 직감 그리고 채신기술 사클의 구린음악은 들어도 알지만 좋은 음악은 왜 좋은음악인지 명확히 설명하기 어려움(내기준) 사실 다들 알고잇다. 어디가 잘못됫는지를. 하지만 아무도 이 사실을 정략적으로 수치화하기 어렵고 제대로 설득하고, 실제로 개선하기까진 매우어려운 일이다. 나역시 그랫엇지만 개선하고싶엇다. 이 늙고병든 어플리케이션을 진단하고 처방하고싶엇다 더럽고 혼란스러운 우리네 업무코드를 구원해줄 메시아가 필요햇던것이다. 결론은 oop와 ddd이다. 업무코드의 추상도는 0이다. 그렇다면 왜 추상화를 해야하는가? 왜 프론트엔드 프레임워크를 도입해야하는가? JPA는 왜 필요한것인가? 변경의 레벨 양상 추이 가 달라서이다. 기본적으로 젤 많이 빨리, 그리고 이상하게(?) 변하는곳이 화면단이다. 이를 서버자원인 jsp와 백엔드는 따라 .. 개발자 아이디어 평 개발에 아이디어는 하루아침에 번뜩이는것같아보여도 꽤나 오랜 시행착오를 거쳐야한다. 답답하고 정말 고민이되고 때로는 절망스럽기까진하지만 어느날 갑자기 새로운 아이디어가 생각난다. 하지만 그 이면에는 남들은 모르는 자신만의 혼자생각하는 시간이 훨씬 길다는 점이 개발이 참 어려우면서도 매력잇는 점인거같다 옵저버 패턴 평 옵저버 패턴 옵저버는 옵저버블이 옵저버에게 옵저빙해야한다 알려주는 패턴 옵저버는 능동적으로 옵저빙하지않고 다리꼬고앉아서 어디한번해봐 라는 수동적인 태도의 객체 Ex1) 어딘가 불이 낫다 목격자가 소방서에 신고한다. 보고를 받은 소방사들이 출동한다. Ex2) 슈스케패턴 이승철옵저버 발라드옵저버블 +50점 힙합 -30점 ... 이하늘옵저버 윤종신옵저버 댄스옵저버블 발라드옵저버블 힙합옵저버블 방문자 패턴 평 방문자 패턴은 방문할 공간이 방문자에게 자신의 모든것을 내어주고 샅샅히 뒤져주세요 하는 인상을 같게한다. 압수수색같은걸까 Ex1) 경찰 방문자 민주노총 압수수색 건설노조 압수수색 Ex2) 공항 보안검색 사내 코드에서 악취(code smell)가 난다. 2023년 1월 5일 목요일 오후 3:45 사내 코드에서 악취(code smell)가 난다. 입사하면서부터 늘 궁금한게 있었다. 이건왜이렇게 했지? 물론 보다보면 생각보다 잘 짜여진, well-made practice도 존재한다. 늘 보다보면 왜 이렇게 했지? 싶은데 사실은 왜냐는 질문은 성립하지 않는다. 그것은 그때는 최선의 코드였기 때문이다. 그때에는 어쩔 수 없이 작성했지만 지금까지도 스멜이 나는 건 어쩔 수 없는 일이다. 일단 첫번째로, 컴파일타임에 모든것들이 결정된다는 것이다. 고객이 개인고객인지, 법인고객인지도 모르는데, 개인고객이라면 인증방법으로 무엇을 선택할지 아직 결정도 안했는데, 납부방법도 마찬가지다. 코드는 이미 모든것을 알고 있으며, 거의 모든 데이터들을 준비해놓고 if문으로 분기처.. PDD(페이지 주도 개발)는 나쁘다 JSP처럼 페이지단위로 개발이 진행될 경우 거의 모든 데이터는 페이지 상의 어딘가에 표현이되거 나 표현을 위한 조건으로 사용된다 페이지는 독재자다. 데이터는 페이지의 필요에 따라 선택당하며, 강하게 종속된다. 이는 변경에 매우 취약한 구조이다. 물론 이게 꼭 나쁜건만은 아니다. 관리자페이지와 같은 간단한 게시판형태의 화면이라면 더할 나 위없이 좋은 선택이라 생각한다(물론 게시판이 다같은 게시판은 아니지만). 다시 본론으로 돌아와서, 특히 백엔드 아키텍처를 페이지단위로 구성한다면 다음과 같다. PageAController - PageAService ... PageBController - PageBService 데이터는 도메인(모델)의 구조를 가지지 못하며, 그저 데이터쪼가리일 뿐이다. 나는 그런 페이지와 .. 이전 1 2 3 4 ··· 23 다음