분류 전체보기
-
[Spring] JPA 설정 및 사용Spring 2021. 10. 11. 15:53
jpa를 쓰기에 앞서 몇가지 설정이 필요하다. build.gradle 파일의 디펜던시에서 첫번째줄을 삽입해줘야한다. spring boot starter data jpa는 jdbc관련 라이브러리를 포함한다. resources/application.properties 파일에도 수정할 것이 있다. spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none 이 두 줄을 넣어줘야 하는데, 첫째 줄의 의미는 jpa로 날린걸 sql로 볼 수 있게 해준다. 둘째 줄은 원래 jpa를 쓰면 객체를 보고 테이블까지 만들어 버린다. 그래서 이미 만들어놨거나 그 기능이 필요없는 경우 none으로 끄고 시작하면 된다. JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다..
-
[Spring] Form에 쏴준 데이터 받고 다시 출력하기Spring 2021. 10. 6. 11:23
데이터 Form으로 받기 이름 등록 Form으로 감싸 데이터를 입력받아 가져오는 방법은 @PostMapping이라는 어노테이션을 쓰는 것이다. @PostMapping("/members/new") public String create(MemberForm form) { Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; } 이렇게 하면 members/new 에서 폼을 받을 때 연결받아 데이터를 받을 수 있다. 데이터를 받고나면, 리다이렉트를 해줌으로써 형식을 유지해준다. 데이터 프론트로 출력하기 Model 클래스 객체를 통해 데이터를 출력하는 방법은 앞서 설명한 ..
-
[Spring] 스프링 빈과 의존관계Spring 2021. 10. 5. 16:58
컴포넌트 스캔과 자동 의존관계 설정 멤버 컨트롤러가 멤버 서비스와 멤버 레포지토리를 사용할 수 있도록 의존관계를 준비해야한다. @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } } 생성자에 @Autowired를 붙여주면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI(Dependency Injection), 의존성 주입이라고 한다. 이전 테스트에서는 개발..
-
[Spring] Test 코드 기초작성Spring 2021. 10. 4. 16:06
요즘은 테스트 코드를 작성하고 개발하는데에 사용하는 것이 필수라고 한다. 때문에 처음 배운 테스트 코드 작성을 기록한다. 한개의 클래스와 3개의 함수를 만들었다. 때문에 3개의 함수가 잘 돌아가는지에 대해 코드를 작성할 예정이다. 해당 클래스에 대해 테스트코드를 작성할 때에는 실제 메인폴더와 경로를 똑같이 설정해주고 이름도 뒤에 Test만 붙인다. 실제 save함수와 테스트용 save함수 테스트를 할때는 어노테이션 @Test를 붙인다. 테스트코드 자체는 큰 그게 없지만, 마지막줄에 조금 차이가 있다. 테스트 시에 결과값을 비교하는 함수는 여러가지 있지만, 인프런 김영한 선생님은 한가지 방법을 추천한다. Assertions.assertThat() Assertion클래스는 두가지가 있는데 junit에서 지원..
-
[JAVA] 람다식 (lamda Expression)와 함수형 인터페이스(Functional Interface)JAVA 2021. 10. 4. 14:48
람다는 Java8의 추가된 기능 중 하나이다. 람다 표현식(lamda expression)은 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다. 람다식 사용법 람다의 기본형태는 이렇다. (매개변수, ...) -> {실행문 ...} # 예제 1 int max(int a, int b) { // 기본 표현식 return a > b ? a : b; } (a, b) -> a > b ? a : b // 람다 표현식 # 예제 2 void printVar(String name, int i) { // 기본 표현식 System.out.println(name + " = " + i); } (name, i) -> System.out.println(name + " = " + i) // 람다 표현식 # 예제 3 int r..
-
[JAVA] 익명클래스(Anonymous class)JAVA 2021. 10. 3. 17:50
익명클래스는 이름이 없는 inner 클래스이다. 클래스 정의와 동시에 객체를 생성할 수 있다. 부모 클래스를 상속하는 방식으로 정의한다. 익명클래스의 목적은 부모 클래스를 상속받는 서브 클래스를 생성하지 않고도, 단일 객체를 만들어서 부모 클래스에 정의된 동작에서 행위를 추가할 수 있다는 것이다. 예시) Test t1 = new Test(){ public int num = 10; @Override public int getNum(){ return this.num; } }; 이처럼 부모클래스 Test를 상속받아 오버라이드를 해, 굳이 클래스파일을 생성치 않고 즉석에서 만들 수 있다. 하지만 익명클래스는 결국 부모클래스 인스턴스에 넣기 때문에 부모클래스에서 추상화하지 않는 메소드에 대해선 호출이 되지 않는다..
-
[CS] 함수형 프로그래밍Computer Science 2021. 10. 3. 16:04
함수형 프로그래밍은 순수 함수 위주로 문제를 해결하는 기법으로, 변수를 줄이고, 가독성을 높이고, 유지보수를 용이하게 만들어준다. 클린코드의 저자 마틴옹은 함수형 프로그래밍을 대입문이 없는 프로그래밍이라고 정의했다. 함수형 프로그래밍의 특징 함수형 프로그래밍의 특징은 크게 3개로 볼 수 있다. 1. 불변성 2. 참조투명성 3. 일급함수 불변성 어떤 값의 상태를(메모리에 이미 담긴 상태를) 변경하지 않는다는 뜻 상태의 변경은 Side Effect(부수 효과)를 일으키기 때문에, 함수형 프로그래밍에서는 이를 제한한다. 참조투명성 함수가 외부의 영향을 받지 않는 것을 의미한다, 파라미터와 멤버변수에 결과를 의존한다. 일급함수 일급이 붙어있다는 뜻은 이런 의미를 갖고 있다. - 변수나 데이터 구조안에 담을 수 ..
-
[Spring] 웹 개발 기초Spring 2021. 10. 1. 11:43
웹을 개발하는 방법은 크게 3가지가 있다. - 정적 컨텐츠 - MVC와 템플릿 엔진 - API 정적 컨텐츠 서버에서 하는 것 없이 파일을 웹 브라우저에 내려주는 것 MVC와 템플릿 엔진 템플릿 엔진은 HTML을 그냥 주는 것이 아닌 프로그래밍을 거쳐 동적으로 바꿔서 내리는 것으로 JSP, PHP 등이 템플릿 엔진이다. 그것을 하기위해 Model View Controller가 필요하다. API JSON이라는 데이터 포맷으로 클라이언트에게 데이터를 전달한다. Vue React도 다 JSON에서 받아 클라이언트에서 알아서 화면을 그리고 정리해준다. 서버끼리 데이터 통신을 할 때에도 HTML이 필요없어 API방식을 쓴다. 방법별 상세 설명 정적컨텐츠 static에 넣으면 알아서 접근 가능하다. 내장 톰캣서버가 ..