개발/Spring 9

[자바 ORM 표준 JPA 프로그래밍] JPA란?

JPA(Java Persistence API)는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다.즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다.JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 자바 진영의 ORM 기술 표준이란?객체 관계 매핑객체는 객체대로 설계 & 관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑 (패더라임 불일치 해결해 줌)대중적인 언어에는 대부분 ORM 기술이 존재JPA는 표준 명세JPA는 인터페이스의 모음 JPA는 애플리케이션과 JDBC 사이에서 동작 JPA 동작 - 저장JPA에서 멤버 회원 객체를 저장해 주라며 JPA에 ..

개발/Spring 2025.01.11

[Spring] 스프링 입문 - (회원 관리 예제)웹 MVC 개발

[ 회원 웹 기능 - 홈 화면 추가 ]홈 컨트롤러 추가 회원 관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록  컨트롤러가 정적 파일보다 우선순위가 높음 localhost::8080 요청이 들어오면1. controller을 찾고 없으면 !2. static 파일을 찾음 [ 회원 웹 기능 - 등록 ]1. 회원 등록 폼 개발회원 등록 폼 컨트롤러@Controllerpublic class MemberController { private MemberService memberService; @Autowired public void setMemberService(MemberSer..

개발/Spring 2024.11.10

[Spring] 스프링 입문 - 자바 코들 직접 스프링 빈 등록하기

회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행하나하나 직접 스프링한테 등록하기 ! @Bean 어노테이션과 @Configuration 어노테이션 ]만약 다음과 같은 클래스를 스프링 컨테이너에 등록하고자 한다면,public MemberRepository memberRepository() { return new MemoryMemberRepository();} 설정 클래스에서 @Bean 어노테이션을 사용하여 수동으로 스프링 컨테이너에 빈을 등록한다.이때 설정 클래스에서는 @Configuration 어노테이션을 클래스에 붙여준다.@Bean을 사용해 수동으로 빈을 등록해줄 때에는 메소드 이름으로 빈 이름이 결정된다. 그러므로 중복된 빈 ..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정

회원 컨트롤러가 회원 서비스, 리포지토리를 사용할 수 있게 의존관계를 준비한다. @Controller 사용!!private final MemberService memberService = new MemberService();DI (Dependency Injection), 의존성 주입: 객체 의존관계를 외부에서 넣어주는 것만약 여러 컨트롤러를 사용할 때, 매번 new MemberService로 불러올 필요가 없다 !!@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { ..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 회원 서비스 테스트

기존에 만들어놨던 MemberService 클래스에서 단축키 command + shift + T 입력 후 create new test 선택위와 같이 선택 한 후 완료를 하면 test 아래에 MemberServiceTest파일이 생성 된다. 테스는 메서드를 한글로 입력해도 상관 없다 !! for 직관성 회원가입 회원 가입을 하려면 member 먼저 만들어야한다.give when then 패턴: 주석으로 give, when, then을 입력한 후, 코드를 짜면 훨씬 수월하게 짤 수 있다.@Testvoid 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberS..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 회원 서비스 개발

Service: 서비스는 비즈니스 처리를 하는 롤 (네이밍도 이에 맞게 해야 함) MemberService 클래스 생성1. 회원 가입public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member){ Optional result = memberRepository.findByName(member.getName()); result.ifPresent(m -> { throw new IllegalStateExcept..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - (회원 관리 예제) 회원 리포지토리 테스트 케이스

테스트 케이스란 ?개발한 기능을 실행해서 테스트 할 때 자바와 main 메서드를 통해서 실행 or 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행준비하고 실행하는데 오래 걸리고, 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점을 자바의 JUnit이라는 프레임워크로 테스트를 실행하여 해결 가능아래와 같이 해당 위치에 repository 패키지를 만들어준다.이때 class 이름은 test하려는 repository 이름 뒤에 "Test"를 붙여준다. 테스트 케이스 만들기@Test 어노테이션을 사용하여 검증 가능!class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository()..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - (회원 관리 예제) 회원 도메인과 리포지토리

비즈니스 요구사항 정리데이터 : 회원 ID, 이름기능 : 회원 등록, 조회아직 데이터 저장소가 선정되지 않음 (가상의 시나리오)컨트롤러 : 웹 MVC의 컨트롤러 역할서비스 : 핵심 비즈니스 로직 구현리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인 : 비즈니스 도메인 객체, ex)회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계가벼운 메모리 기반의 데이터 저장소 사용회원 도메인과 리포지토리 만들기1. 회원 객체hello.hellospring에서 domain패키지 생성 후 Member객체 만들기package hello.hellospring.domain;public class M..

개발/Spring 2024.11.05

[Spring] 스프링 입문 - MVC, API

정적 컨텐츠의 반대 = API MVC(Model, View, Controller)관심사 분리 ! View → about 화면Controller → about  비즈니스 로직, 내부 로직 처리Model → 관련된 로직을 화면에 넘겨주는 방식 @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; }model에 담아서 보내면 View에서 렌더링 할 때 사용실제 서버에서 돌면 hello! empty값이 th:text 값으로 바뀐다API- 문자를 내놓을 때http에서 body부분에 데이터에 return값을 직접 넣어주겠다는 뜻@Cont..

개발/Spring 2024.11.05