분류 전체보기(129)
-
Generics_제한
Generic 클래스에 타입 변수를 지정할 때, extends 를 통해 타입에 제한을 둘 수 있다. public class Zoo { ArrayList list = new ArrayList(); } 위와 같이 작성하면 타입변수 에는 Animal 의 자손 클래스만 입력 가능해진다. public class Animal { } public class Dog extends Animal{ } public class LimitedGeneric { public static void main(String[] args) { Zoo dogPark = new Zoo(); // Zoo RadioPark = new Zoo();// 컴파일 에러. } } 허용된 타입 외의 정보를 넣으려 하면, 컴파일 단계에서 걸러낼 수 있다. /..
2024.03.21 -
테스트_@Transactional
테스트 클래스에 @Transactional 을 사용하면, 테스트 시작 전 트랜잭션을 실행하고, 테스트 완료 후 항상 롤백을 진행한다. 롤백으로 인해 db는 테스트 시작 전으로 돌아가므로, 매번 같은 테스트 코드로 매번 같은 결과를 낼 수 있다. ---- 트랜잭션이 뭔데? 트랜잭션이란? 데이터 베이스의 상태를 바꾸기 위해 수행되는 최소한의 작업 단위 이다. 하나의 트랜잭션은 commit 되거나, rollback 된다. 트랜잭션의 특성 - Atomic(원자성) - Consistency(일관성) - Isolation(독립성, 격리성) - Durability(영속성,지속성) 최소한의 작업 단위가 뭔대? 맘대로 써보는 생활 예시 상황 : 기쁨이는 엄마의 요청으로 심부름을 해야 한다. 트랜잭션 :'기쁨이는 돈을 지..
2024.02.27 -
h2_문법 오류_큰 따옴표, 작은 따옴표
select * from member; insert into member(NAME) values("WTF"); 위와 같이 작성하면, 문법 에러가 딱! 값으로 넣으려는 "WTF" 를 Column 으로 찾으려는 모양이다.. 값으로 넣을 건데.... 변화를 줘 봤다. select * from member; insert into member(NAME) values('WTF'); 얜 된다. 바뀐 내용은 아래와 같다. 기존 : insert into ~~~ values("WTF"); 변경 : insert into ~~~ values('WTF'); H2 DB에서는 values()로 감쌌어도 큰 따옴표""를 사용하면 그 내용을 column 으로 인식하고 찾으려는 행동을 취하는 모양이다.
2024.02.27 -
스프링 빈 등록 방법
스프링 빈 등록 방법1. 컴포넌트 스캔 이전 글에서 프로그램을 실행하면 스프링 프레임워크가 특정 범위에 있는 특별한 표식을 읽어 '스프링 빈'을 생성하고, 컨테이너에 등록한다고 했다. 이전 글에서 특별한 표식의 예로 @Controller , @Service , @Repository 등으로 들었는데 이 애노테이션을 거꾸러 거슬러 올라가 보면 @Component 애노테이션을 발견할 수 있다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Repository { @AliasFor( annotation = Component.class ) String value() defa..
2024.02.25 -
의존 주입
MemberService 에서 MemberRepository 를 사용하기 위해서는 1. MemberService 의 인스턴스를 생성한다. 2. MemberRepository 의 인스턴스를 생성한다. 3. MemberService 에서 MemberRepository를 참조하여 접근. 사용한다. 의 과정을 거쳐야 한다. 그런데 말입니다. Service와 Repository가 밀접한 연관을 가지고 있고, Service가 Repository를 자주 사용한다고 할 때, Repository를 매번 생성하게 되면 무슨 일이 벌어지게 될까요? 이전 테스트 글에서 학습했던 것처럼 테스트의 결과가 다 따로 놀게 될 것입니다. Sevice를 동작시킬 때 마다 계속해서 새로운 MemberRepository를 생성하기 때문입니..
2024.02.25 -
테스트 코드 작성 시의 에로사항
class MemberServiceTest { MemberService memberService = new MemberService(); void join() { // given Member member1 = new Member(); member1.setName("회원가입테스트용1"); // when memberService.join(member1); // then assertThat(member1.getId()).isEqualTo(1); } @Test void findMembers() { } @Test void findOne() { //when Member foundMember = memberService.findOne(1L).get(); //then assertThat(foundMember.getNa..
2024.02.24