JPA의 페치 전략이란 JPA는 엔티티를 조회할 때 연관 관계의 엔티티를 언제 로딩해올지 설정할 수 있는 페치 전략을 제공하고 있습니다. Fetch 전략의 종류 1. FetchType.EAGER (즉시로딩) 2. FetchType.LAZY (지연로딩) 현업에서는 되도록이면 LAZY를 사용하라는 말을 들어왔는데, 이번 글을 써보며 왜 그런지 깊이 알아보고자 합니다. 먼저 두 가지 타입의 Fetch 전략에 대해 자세히 알아보겠습니다. 즉시 로딩(EAGER) 엔티티를 조회할 때 연관 관계에 있는 엔티티까지 즉시 한 번에 조회합니다. @...ToOne 관계에서는 기본적으로 즉시 로딩 전략을 사용하도록 설정되어 있습니다. 즉시 로딩은 조회하는 엔티티와 연관 관계의 엔티티가 반드시 같이 사용되는 경우에 사용하면 좋..
단위 테스트는 얼마나 격리되어야 하나요? 올해 새로운 토이 프로젝트에 TDD를 처음으로 적용해봤는데요. 테스트 코드를 짜던 와중에 과연 이 코드가 단위 테스트의 개념에 잘 부합하고 있는지 궁금해지기 시작했습니다. 대충 여러 자료를 찾아보니 대체로 모든 글에서 단위 테스트를 아래의 개념으로 설명하고 있었습니다. 단위 테스트란 상대적으로 격리된 방식으로 코드의 구별된 단위를 테스트하는 것 😥.. 단위 테스트의 개념은 정말 애매하지 않나요? 구별된 단위란 함수일까요, 아니면 클래스를 말하는 걸까요? 테스트 대상을 대체 얼마나 격리해서 테스트해야 할까요? 저는 단위 테스트를 작성하며 이 두 가지의 모호한 개념을 이렇게 인식했습니다. 1. 구별된 단위 Spring Boot 기반 서버에서 Service Layer의..
자바의 예외 종류와 기본적인 예외 처리 방법부터 간단히 알아보자! 그 뒤에 스프링에서의 예외 처리 방법을 살펴보면 이해가 훨씬 편할 것이다 :) 예외의 종류: 체크 예외와 언체크 예외 자바의 예외는 java.lang.Exception 클래스와 그의 하위 클래스들로 이루어져 있다. 예외는 RuntimeException 클래스의 상속 여부를 기준으로 다시 체크 예외와 언체크 예외로 나뉜다. 체크 예외 체크 예외는 RuntimeException을 상속하지 않는 예외 클래스들을 말한다. 복구가 가능한 예외들이기 때문에 반드시 예외 처리 구문이 필요하다. try ~ catch문을 통해 해당 메소드 안에서 예외를 처리하거나 throws 문으로 해당 메소드를 호출하는 상위 메소드에게 예외를 넘길 수 있다. 체크 예외..
스프링 AOP 다이내믹 프록시를 이용해 분리한 트랜잭션 코드는 투명한 부가기능 형태로 제공돼야 한다. 프록시 팩토리 빈 방식의 접근 방법 한계 1. 부가기능이 타깃 오브젝트마다 새로 만들어진다. → 스프링에서 제공하는 ProxyFactoryBean 의 어드바이스를 통해 해결 완료! 2. 부가기능 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean 빈 설정 정보를 추가해줘야 한다. → 여전히 스프링의 ProxyFactoryBean에서도 문제가 되고 있다. 빈 후처리기 BeanPostProcessor 인터페이스를 구현해서 만든다. 스프링 빈 오브젝트로 만들어지고 난 후에 빈 오브젝트를 다시 가공할 수 있게 한다. DefaultAdvisorAutoProxyCreator 빈 후처리..
AOP AOP는 다소 내용이 길어 두 글로 나눈 점 감안해주세요 :) 트랜잭션 코드의 분리 5장까지 다뤘던 upgradeLevel() 메소드를 다시 한번 살펴보자. public void upgradeLevels() throws Exception { TransactionStatus status = this.transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); for (User user : users) { if (canUpgradeLevel(user)) { upgradeLevel(user); } } this.transactionManager.commit(status); ..
8장 스프링이란 무엇인가? 스프링이 단지 IoC/DI를 제공하는 프레임워크이라고 정의할 수 있을까? 스프링의 사상과 가치, 적용된 원칙을 더 깊이 있게 살펴보자. 스프링의 정의 📝 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션 프레임워크? 특정 계층, 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적 프레임워크 애플리케이션 개발 전 과정을 빠르고, 편리하고, 효율적으로 진행하는것이 일차적인 목표 경량급? 스프링 자체 코드나 기술이 가볍다는 의미가 아니다. 불필요하게 무겁지 않다는 의미이다. ↔ EJB 비싼 서버를 사용할 필요 없이 가장 단순한 서버환경인 톰캣, 제티에서도 완벽하게 동작한다. 자바 엔터프라이즈 개발을 편하게? 근본적인 부분..
- Total
- Today
- Yesterday
- 쇼미더코드
- 버추억박스에러
- E_FAIL
- Baekjoon27219
- 백준27219
- linuxgedit
- 버추억박스오류
- 백준
- virtualbox
- Linux
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- cat
- whatis
- atq
- 사용자ID
- baekjoon
- GithubAPI
- linuxtouch
- OnActivityForResult
- 리눅스
- Baekjoon27211
- GitHubAPIforJava
- awk프로그램
- 코테
- linuxawk
- 리눅스cron
- linux파일
- api문서
- 백준27211
- cron시스템
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |