본문 바로가기

개발 이론59

[Kotlin] 기초 개념 (1) Kotlin을 공부해야하는 상황이라 부트캠프에 있는 Kotlin 기초개념 중 헷갈리거나 처음본 개념들을 정리할 것이다. 공부하면서 느낀점은 확실히 Java보다 편리한점은 존재하지만 뭔가 헷갈린다고 할까나...??? 그런 부분들 정리할 예정 문자열 템플릿 // kotlin val name = "DalBeen" println("Hello, $name!") println("Hello, ${if(age>26) name else "Dog"}!") // java String name = "DalBeen"; System.out.println("Hello, " + name + "!"); 보통 자바에서는 항상 ""+""을 통해서 변수값을 넣었는데 Kotlin은 위와 같이 편리함을 제공해준다 $+문자열 -> 문자열 리터럴.. 2024. 4. 18.
프록시??? 스프링 AOP?? 트랜젝션?? (5) 이 제목의 챕터를 사실 마무리?라고 해야하나..? 어째든 정리하고자했는데 갑자기 지연로딩도 프록시랑 관련있다는게 생각나서 어떻게 관련이 있는지 한번 공부할겸 정리해본다 지연로딩 JPA를 써봤다면 지연로딩이라는 단어를 한번쯤은 들어봤을 거다. 간단하게 설명하자면 엔티티 A와 연관된 엔티티 B의 정보를 한번에 가져오지 않는 것이다. class Member { @ManyToOne(fetch = FetchType.LAZY) // 지연로딩 @JoinColumn private Team team; } 위의 코드에서 Member를 조회했을때 지연로딩으로 설정되어있다면 해당 값은 같이 조회되지않는다. 좀더 제대로 말하자면 프록시로 감싸진다? 의 느낌이다. 근데 만약 해당 값이 필요하다면?? member.getTeam().. 2024. 4. 15.
프록시??? 스프링 AOP?? 트랜젝션?? (4) 약 한달만에 이어쓰는 프록시이야기...ㅎㅎ 최근 한달동안 서류합격한거 과제하느라 바빴다.. 또 이번주는 꼭 최종합격하고 싶은지라... 열심히 면접 준비하라... 애를 마니 썼다.. 뭐랄까 부족함은 존재하지만 잘할수 있는 신입 개발자라는 걸 어필하고 싶어서...ㅎㅎㅎ 어째든 시간이 좀 나서 그동안 궁금했던 트랜젝션 동작원리를 알아보고자 한다. 트랜젝션은 AOP의 예이다 찾아보니 나는 단순히 트랜젝션이 프록시 패턴 이용해서 구현했거니.. 추측하고 있었는데 그게 아니라 AOP의 대표적인 예였다. 앞서 말했듯이 AOP는 여러 클래스의 비즈니스 로직과 공통적인 부가로직을 구분하게 위하여 사용되는 기술?? 이다. 그래서 생각해보면 트랜젝션도 결국 여러 서비스 코드에서 @Transactional이 붙으면 AOP에 의.. 2024. 4. 10.
프록시??? 스프링 AOP?? 트랜젝션?? (3) 지난 블로그에서 동적프록시에 대해서 이야기 해봤다. 오늘은 프록시 팩토리에 대해서 이야기해볼예정이다. 앞선 블로그를 정리해보자면 인터페이스가 있는 경우 JDK 동적 프록시가 적용되고, 그렇지 않은 경우 CGLIB가 적용된다. 근데 여기서 궁금한점이 있다. 누가 인터페이스 유무를 인지해서 프록시를 생성할까?? 만약 JDK 동적 프록시, CGLIB프록시를 모두 사용하면 각각 InvocationHandler, MethodInterceptor를 만들어서 관리해야하는가?? 또는 If문과 같이 어쩔때는 적용하고 안하고 싶다면 어떻게 해야할까? ProxyFactory 스프링이 ProxyFactory를 통해서 동적 프록시를 통합하여 편리하게 만들어주는 기능을 제공한다. 뿐만 아니라 Advice라는 개념을 통해 Invo.. 2024. 3. 12.
[mySQL] OrderBy 인덱스 (3) 지난 블로그에서 인덱스 종류와 커버링 인덱스에 대해서 알아보았다. 오늘은 OrderBy 인덱스에 관해서 이야기해볼예정이다. Order BY 인덱스 Order By절에 명시된 칼럼에 인덱스가 있다면 MySQL은 이미 정렬된 데이터를 사용하기 때문에 추가적인 정렬작업이 필요없다. 그러나 만약 없다면 filesort방식으로 임시 테이블을 사용해 정렬 작업을 수행한다. filesort 이용하고 있는지 여부는 EXPLAIN 명령어를 통해 Extra칼럼에 Using filesort가 있다면 filesort를 사용하고 있다는 것이다. 왜 Order By절에 명시된 칼럼에 인덱스를 사용하는 것이 좋을까? -> Limit절과 사용하게 된다면 인덱스가 있을때 MySQL은 필요한 만큼만 데이터를 읽고나서 처리를 중단한다. .. 2024. 3. 10.
[mySQL] 인덱스 종류와 커버링 인덱스 (2) 지난 블로그에 인덱스와 복합인덱스에 대해서 기록해보았다. 오늘은 인덱스 종류와 커버링 인덱스에 관해서 이야기해볼예정이다. Explain type, extra 설명 앞선 내용을 설명하기 전에 인덱스를 확인할때바다 type과 extra를 봤다. 이에 관해서 조금 이야기를 나눠보자. 이에 대해서 간단하게 정리해둔 블로그가 있다. 여기서는 주요키워드만 볼 것이다. 1. type all을 빼고는 인덱스를 탄다는 것알 알면된다. index -> index full scan : 수직적 탐색 없이 인덱스 리프 블록 처음부터 끝까지 수평적으로 탐색한다 데이터 검색을 위한 최적의 인덱스가 없을때 차선으로 선택됨 예를 들어 인덱스 선두 칼럼이 조건절에 없으면 옵티마이저는 먼저 Table full scan을 하고자하지만 대용.. 2024. 3. 7.
728x90