🧩STS (Spring Tool Suite) > - STS 다운로드 https://github.com/spring-projects/toolsuite-distribution/wiki/Spring-Tool-Suite-3 > - 자바 버전확인 > - 자바 환결설정
이클립스 상단 Help -> Install New Softwarehttp://www.thymeleaf.org/eclipse-plugin-update-site/ 입력전체 select프로그램 재시작작동하지 않을 시 재부팅 or Configure -> Add Th
@Controller : Contriller에 붙여준다. 해당 mapping url을 찾는다.@GetMapping : get 방식의 요청 @PostMapping: post 방식의 요청 @RequestMapping : get, post방식 상관없이 가능스프링부트 템플릿엔
🧩 MemberController MemberController가 생성될 때, 생성자를 호출해준다. 즉, Service까지 생성해서 자동으로 호출해준다. @Autowired를 선언해주면 MemberController가 생성하면 스프링이 memberService와
🧩 SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체지향 설계의 5가지 원칙을 정리 SRP : 단일 책임 원칙 OCP : 개방-폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존관계 역전 원칙 1) 개방-폐쇄 원칙 확장에는
코끼리 build.gradle 클릭 implementation 'org.projectlombok:lombok' 추가서버 끈 상태에서, build.gradle 클릭 -> Gradle-> Refresh Gradle Project 클릭Project and External D
@ReuqestParam 어노테이션은 HttpServletRequest 객체와 같은 역할을 한다.메소드의 파라미터값으로 @RequestParam을 넣어주면된다.@ResponseParam 어노테이션은 HttpServletResponse 객체와 같은 역할을 한다.타임리프는
🧩 RequestParam , ResponseParam @ReuqestParam 어노테이션은 HttpServletRequest 객체와 같은 역할을 한다. HttpServletRequest에서는 getParameter() 메소드를 이용했지만, @RequestParam을
객체의 초기화 부분객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다.WAS가 띄워질 때 실행된다.마지막 소멸 단계context path를 추가해서 이동프로젝트이름/index.html프로젝트이름/user/userMain.jsp/(@PathVariab
Enumeration데이터 중에는 요일(월,화,수,목,금,토,일), 계절(봄,여름,가을,겨울) 등과같이 몇 가지 한정된 값을 갖는 경우가 있다.열거 타입에 들어가는 값(월, 화, ... )들을 열거 상수라고한다.자바 class대신 enum을 적어준다.열거 상수를 적을때
🧩 th:field th:field="${item.itemName}" -> id="itemName" name="itemName" 을 같이 만들어준다. th:field = {itemName} th:object 소속이라는 뜻의 을 넣어주면 item도 생략 가능하다
타임리프는 스프링의 BindingResult를 활용해서 편리한 오류 표현기능 제공field : BindingResult가 제공하는 오류에 접근 할 수 있다.th:errorclass : th:field에서 지정한 필드에 오류가 있으면 class를 추가th:errors :
🧩회원가입 HomeController MemberController members -> 공통 Member의 빈 객체 model에 넘겨줘야한다. @ModelAttribute 사용 model.addAttribute("member",new Member());
thymeleaf에서 url에다 자동으로 포함시켜주는 내용이라고 보면 된다.server.servlet.session.tracking-modes=cookie response.addCookie(idCookie); 생성된 쿠키(idCookie)를 서버 응답 객체(HttpSe
🧩 필터 필터 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터는 말 그대로 요청과 응답을 거른뒤 정제하는 역할을 한다. Dispatcher Servlet에 요청이 전달되기 전 / 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수
🧩 프로젝트 생성 웹페이지 https://start.spring.io/ > 프로젝트 생성 -> DB 계정 생성 -> DB 연결 🧩 application.properties
객체와 테이블을 생성하고 매핑하기@Entity : JPA에서 해당 객체를 관리하겠다는 어노테이션@Id : 데이터베이스 PK와 매핑 할 값@Column : 해당 필드가 DB에서 쓰일 때 적용되는 속성들아래 코드 DB 해석 create table Member( id
JPA를 이해하는데 가장 중요한 용어객체의 엔티티를 영구 저장하는 환경이라는 뜻EntityManager.persist(entity); \-> "entity"에 들어가는 객체(Member, Team, .. 등)를 DB에 저장하는 구나! 싶지만 좀 더 깊은 의미가
객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn@Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.JPA를 사용해서 테이블과 매핑할
객체와 테이블 연관관계의 차이를 이해객체의 참조와 테이블의 외래 키를 매핑연관관계 주인(Owner) : 객체 양방향 연관관계는 관리가 필요테이블은 외래키로 조인을 사용해서 연관된 테이블을 찾는다.객체는 참조를 사용해서 연관된 객체를 찾는다.테이블과 객체 사이에는 이런
현재 객체는 Member가 Team을 가졌으나, Team은 Member를 가지지 못한다.객체 참조와 외래키의 가장 큰 차이점테이블은 FK만 있으면 양쪽에 연관관계를 알 수 있다.Member -> Team : N -> 1 => @ManyToOne FK가 있는 곳Team
단방향 @ManyToOne @JoinColumn(name = "ORDER_ID") private Order order; 양방향 @OneToMany(mappedBy = "order") private List orderItems = new ArrayList(); public void addOrderItem(OrderItem orderItem) {...
JPA는 다양한 쿼리 방법을 지원JPQL - 권장, 실무사용, 거의 모든 문제 해결 가능JPA Criteria - 자바코드를 짜서 JPA를 빌드해주는 generator 모음QueryDSL - 권장, 실무사용네이티브 SQL - connect by ...JDBC API
내장 타입새로운 값 타입을 직접 정의할 수 있음JPA는 임베디드 타입(embedded type)이라고 함주로 기본값 타입을 모아 만들어서 복합값 타입이라고도 함int, String 과 같은 값 타입@Embeddable : 값 타입을 정의하는 곳에 표시@Embedded
select 절에 조회할 대상을 지정하는 것select m from Member m \-> Member 엔티티 조회 select m.team from Member m \-> Member와 관련된 team을 가지고 온다.select m.username, m.ag
프로젝트 설정spring 사이트 yaml 확인설정파일이 많아지면 Properites 보다 yaml 파일로 보는게 직관적https://docs.spring.io/spring-boot/docs/2.7.6/reference/html/data.html!\[](http
🧩 아이템 수정 - 변경감지와 머지(merge) 준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태로 현재는 영속상태가 아닌 상태이다. 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다. 준영속 엔티티를 수정하는 2가지 방법 변경 감지 기능 사
QMember qMember = new QMember("m"); //별칭 직접 지정 QMember qMember = QMember.member; // 기본 인스턴스를 사용 QMember.memberQmember에 있는 하위내용까지 사용(제일 많이 사용하는방법)
join -> inner join을 기본으로 가져온다.결과 쿼리문연관관계가 없는 필드로 조인회원의 이름이 팀 이름과 같은 회원 조회결과쿼리문leftjoin 결과 쿼리join 결과나 자신을 가져다 쓸 때는 객체를 하나 더 만들어준다.결과쿼리결과쿼리stringValue(