전체 글344 5부 아키텍처 16장 독립성 1. 유스케이스 시스템의 아키텍처는 시스템의 의도를 지원해야 함 아키텍트의 최우선 관심사는 유스케이스이며, 아키텍처에서도 유스케이스가 최우선, 아키텍처는 반드시 유스케이스를 지원해야 함 시스템의 유스케이스는 시스템 구조 자체에서 한눈에 드러나야 함 행위는 일급 요소이며 시스템의 최상위 수준에서 알아볼 수 있으므로 개발자가 일일이 찾아 헤매지 않아도 됨 클래스, 함수 또는 모듈로서 아키텍처 내에서 핵심적인 자리를 차지할 뿐만 아니라, 자신의 기능을 분명하게 설명하는 이름을 가짐 참고 21장 소리치는 아키텍처 2. 운영 요구와 관련된 각 유스케이스에 걸맞은 처리량과 응답시간을 보장해야하며 운영 작업을 허용할 수 있는 형태로 아키텍처를 구조화 해야함 아키텍처에서 각 컴포넌트를 적절히 격리하여 유지하고 컴포넌트.. 독서(Reading)/클린아키텍처(Clean Architecture) 2022. 12. 29. 1. 영속성 관리 1. 영속성 컨텍스트 논리적인 개념으로, 엔티티를 영구 저장하는 환경 엔티티매니저를 통해 영속성 컨텍스트에 접근 EntityManager.persist(entity) 영속성 컨텍스트를 통해 영구 저장하겠다 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 영속성 컨텍스트의 이점 1차 캐시 영속성 컨텍스트라고 이해해도 무방함 특정 트랜잭션 찰나의 순간에서만 이득이 있음 (데이터 베이스 트랜잭션 단위로 엔티티매니저를 만듦 ->트랜잭션 후 1차 캐시 날라감[고객 한 명의 비즈니스 로직용]) 동.. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. 5. 값 타입 1. 기본값 타입 엔티티 타입(Entity Type) @Entity로 정의하는 객체 식별자로 지속해서 추적 가능 값 타입(Value Type) int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 분류 기본값 타입 자바 기본 타입(Primitive Type) - int, double 래퍼 클래스- Integer, Long String 임베디드 타입(embedded type, 복합 값 타입) 컬렉션 값 타입(collection value type) 기본값 타입 생명주기를 엔티티에 의존 값 타입은 공유하면 안됨 참고 자바의 기본 타입은 공유되지 않음 기본 타입은 항상 값을 복사함 Integer 같은 래퍼 클래스나 String .. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. 4. 프록시와 연관관계 정리 1. 프록시 em.getReference() : 데이터베이스 조회를 미루는 가짜 엔티티 객체 조회 처음 사용할 때 한 번만 초기화 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같음 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨 -> == 비교 시에 true 실제 객체의 참조(target)을 보관 프록시 객체 호출 시 실제 객체의 메소드 호출 주의사항 프록시 객체는 원본 엔티티를 상속 받기 때문에 ==비교가 아닌 instance of 사용 (실무에서 많이 발생)영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태(close/detach/clear)일 때, 프록시 초기화 시 문제 발생 -> 하이버네이트는 org.hibernate.LazyInitializationE.. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. JPA 공부 개요 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑(Object Relational Mapping) 영속성 컨텍스트 목차 영속성 관리(https://chaaany.tistory.com/229) 엔티티 매핑 연관관계 매핑 프록시와 연관관계 정리(https://chaaany.tistory.com/227) 값 타입(https://chaaany.tistory.com/228) 객체지향 쿼리 언어 문법 쿼리 메소드 기능 명세 Query By Example Projections 네이티브 쿼리 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. [자료구조/큐] 백준 18258 큐2 package 큐덱; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * push * pop * size * empty * front * back * 명령 수 1 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2022. 12. 18. [누적합]백준 25682 체스판 다시 칠하기 2 package 누적합; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class boj_25682_체스판다시칠하기2 { private static int N, M, K, answer; private static String[][] board; private static int[][][] accSum; public static void main(String[] args) throws IOException { // 1. M x N 크기의 2차원 배열 입력 // 2. 검, 흰 두 가지의 색으로 칠해져 있음 // 3. 아무 곳을 기준으로 K x K 만큼 자르기 // 4. 칠해야 하.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2022. 12. 7. 2022.12.07 2-8 취선논단법 취선논단법 : 좋은 것을 가려뽑아 남김없이 검토하라 가치를 논단하라 p.102 취선 논단은 여러 정보 가운데 가치 있는 것만 추려내어, 다시 하나하나 타당성을 따져보고 검토하는 것이다. p.103 다산은 단락마다 고금의 여러 학설을 비교하고 대조하여 그중 타당한 것을 가려뽑고, 그 가운데 의견이 서로 엇갈려 결론이 나지 않은 것은 자신의 생각으로 논단하여, 마침내 더는 보충할 것이 없다 싶을 정도가 되었다. p.104 전혀 새롭게 뜻을 깨달은 것도 적지 않았다. 또 팽팽하게 논쟁이 붙어 오래도록 결판나지 않은 사안을 전혀 다른 제3의 근거를 찾아내 마무리지어버린 것도 많았다. 폭넓게 섭렵하라 p.105 검토방식도 보완 / 반박 / 질의 / 인증(끌고와서 증명하기) / 고이(다르게 생각하기)로 항목을 세분.. 독서(Reading)/다산선생의 지식경영법 2022. 12. 7. 2022.12.06 2-7 변례창신법 변례창신법 : 전례를 참고하여 새것을 만들어라 새롭게 만들어라 p.91 변례창신은 기존에 있던 것을 참고하여 새것을 만들어내는 것을 말한다. 하늘 아래 새로운 것은 없다. 모든 새것은 옛것의 변용일 뿐이다. 다만 옛법이 아무리 훌륭해도 시대가 같지 않고 사람이 달라지면 쓰임에 맞지 않는 부분이 생기게 마련이다. 이때 옛것만 붙들고 고집하면 문제가 생긴다. p.92 세상이 바뀌었는데도 생각이 바뀌지 않는 것을 인순고식이라 한다. 그러다 문제가 생기면 정면돌파할 생각은 하지 않고, 대충 없던 일로 치고 얼버무려 넘어가려 한다. 이것이 구차미봉이다. 그러니 당면한 문제가 자기발전의 계기가 되지 않고, 구태를 더 강고히 붙들게 만드는 악숙환으로 이어진다. 다산은 저술의 목표를 정하거나 주어진 과제를 수행할 때 .. 독서(Reading)/다산선생의 지식경영법 2022. 12. 6. 백준 16430 제리와 톰 package 단순구현; import java.util.Scanner; public class boj_16430_제리와톰 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.print(B-A +" " + B); } } 해당 문제는 다른 문제를 풀다가 머리 식힐겸 풀게된 문제인데 문제는 마치 나눗셈을 유도하는 듯 하지만 나누기연산의 개념이 다른 컴퓨터 내부작동 원리를 어떻게 해결할 지 물어보는 문제 같다. 1kg 기준으로 기약분수 꼴로 나눠야 하므로 결국 1 * B - A / B를 묻는 거나 다름이 없기에 B-A와 B를.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2022. 12. 5. 2022.12.05 2-6 선정문목법 선정문목법 : 목차를 세우고 체재를 선정하라 얼개를 구성하라 p.81 선정문목은 구체적인 작업에 들어가기에 앞서 문목, 즉 목차를 먼저 정하라는 말이다. p.82 나는 젊었을 때, 매번 정월 초하루가 되면 반드시 미리 1년치의 공부목표를 정해놓곤 했다. 어떤 책을 읽고 어떤 글을 초록할 것인지 같은 것 말이다. 그런 다음 이에 따라 그대로 실행하였다. 혹 몇 달 뒤에 사고가 생겨 생각대로 하지 못하게 되는 한이 있어도, 선을 즐거워하고 앞으로 향해 가려는 뜻만은 또한 절로 능히 덮어 가릴 수가 없었다. 정보를 장악하라 p.82 폭넓은 자료를 섭렵해 본격적인 작업을 해보라고 권한다. 이어 문목을 직접 제시하고, 문목을 그렇게 선정한 근거와 각 문목에 들어갈 내용, 그 내용을 뽑을 텍스트와 전체 책의 분량,.. 독서(Reading)/다산선생의 지식경영법 2022. 12. 5. MySQL 버전별 차이 토이 프로젝트 개발환경 설정을 위해 MySQL 버전별 차이를 파악해 보았아. https://hinweis.tistory.com/65 MySQL 5.7 VS 8.0 버전 별 성능 비교 (벤치마크) MySQL 공식 홈페이지에서 제공하는 벤치마크 정보입니다. 아래의 결과 값은 벤치마크 프로그램 Sysbench 을 통해 분석된 데이터입니다. 1. I/O 바운드 읽기 전용 MySQL 8.0부터 내림차순 인덱스를 지원 hinweis.tistory.com 아무래도 MySQl 8.0 버전을 채택할 듯 싶다. 프로그래밍공부(Programming Study)/데이터베이스(Database) 2022. 12. 3. 이전 1 ··· 8 9 10 11 12 13 14 ··· 29 다음 728x90