본문 바로가기

Back-end44

[카카오테크캠퍼스] JPA 엔티티 매핑, 영속성 컨텍스트 JDBC는 쿼리문을 써주고, Repository를 직접 써줘야했지만, JPA는 이를 훨씬 간편하게 구현할 수 있게 해준다. SQL을 직접 다룰 때의 문제점새로운 필드가 추가되면 관련된 SQL을 다 수정해야한다. 또한 개발자들이 엔티티를 신뢰하고 사용할 수 없다. 스키마 생성하는 방법 application.properties에 spring.jpa.hibernate.ddl-auto=create이를 추가한다. create: 기존 테이블 삭제 후 다시 생성 (DROP + CREATE)create-drop: create와 같으나 종료시점에 테이블 DROPupdate: 변경된 부분만 반영 (운영 DB에 사용하면 안됌)validate: entity와 table이 정상 매핑되었는지만 확인none: 사용하지 않음  @E.. 2024. 7. 13.
[카카오테크캠퍼스] 2주차 과제 코드리뷰 정리 1. 페이지 응답을 담당하는 핸들러와 클라이언트의 요청을 받는 핸들러를 분리하자처음에는 한 엔티티에 대한 컨트롤러가 하나여야한다고 생각했어서 어떤 것을 고쳐야하는지 잘 몰랐었는데, 팀원분들께 물어보니까 컨트롤러를 2개 만들어도 된다고 하셨다. 그래서 @RestController을 쓰는 컨트롤러, @Controller을 쓰는 컨트롤러 이렇게 2가지를 만들었다.@Controller@RequestMapping("/menus/view")public class MenuController { private final MenuService menuService; public MenuController(MenuService menuService) { this.menuService = menuSe.. 2024. 7. 11.
[카카오테크캠퍼스] 1주차 과제 코드리뷰 정리 1주차 과제 코드리뷰를 받았다. 사실 스프링으로 스스로 무언가를 구현하는 것이 처음이라 정말 어려웠고, 수업때 배운 내용을 최대한 활용해서 구현해보려고 노력했다. 그래도 과제 다 못할수도 있다고 생각했었는데 어찌저찌 하니까 되어서 다행이다. 멋사 때 코드리뷰를 받아본 적이 있는데 그 때 실력이 많이 느는 것이 느껴졌었다. 카테캠에서는 깃허브 뿐만 아니라 실시간 줌으로 피드백 해주는 과정도 제공하기 때문에 앞으로 6주동안 얼마나 성장할 수 있을지 기대가 된다. 내가 여쭤봤던 부분Q.코드를 짜다 보니 메서드가 뒤죽박죽인 것 같은데 어떤 순서로 정리하는 것이 좋을까요A.https://github.com/JunHoPark93/google-java-styleguide GitHub - JunHoPark93/goog.. 2024. 6. 30.
[카카오테크캠퍼스] 데이터베이스 적용, JDBC 이제까지는 데이터베이스가 따로 없어서 해시맵에 저장해 두었었는데, 앱이 실용적으로 수행되려면 시스템을 껐다 켜도 데이터가 그대로여야한다.  데이터베이스는 데이터를 관리하기 위한 별도의 공간이고, 데이터베이스를 관리하고, 운영하는 소프트웨어를 DBMS라고 한다. DBMS에는 MySQL, 오라클 등이 있다. JDBC JDBC는 데이터베이스에 접속할 수 있도록 도와주는 자바 API이다.DBMS마다 접근 로직이 다르다. JDBC는 접근로직을 구현체로부터 분리하여 디비에 따라 코드 수정을 할 필요가 없도록 만들어준다. JDBC 구현하는 법 1. 의존성 주입implementation 'org.springframework.boot:spring-boot-starter-jdbc'runtimeOnly 'com.h2data.. 2024. 6. 30.
[카카오테크캠퍼스] Thymeleaf 과제 step2에서 Thymeleaf로 관리자페이지를 만들라는 과제가 나왔다. 나는 Thymeleaf를 다뤄본 적이 전혀 없기 때문에 이거부터 공부해야겠다. 타임리프는 스프링부트에서 공식적으로 지원하는 View 템플릿이다. JSP와는 달리 타임리프 문서는 html확장자를 가지고 있어서 JSP처럼 서블렛이 문서를 표현하는 방식이 아니기 때문에 서버 없이도 동작이 가능하다. th:text : 문자열 생성 -> th:text="${data}"th:each : 반복문 -> th:each="article:${alticleList}"th:if : 조건문 -> th:if=${data != null}th:herf : 이동경로 -> th:herf="@{/article/list(id=${data})}" 태그는 링크를 받아.. 2024. 6. 27.
[카카오테크캠퍼스] 스프링이란, 의존성, http로 정보 주고받기 라이브러리와 프레임워크라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 작동 중에 기능이 필요할 때만 능동적으로 사용한다.프레임워크는 개발자가 만든 클래스에 대한 제어 권한을 넘겨받아서 주도적으로 애플리케이션의 흐름을 제어한다. 개발자가 만든 클래스의 오브젝트를 생성하고 실행하는 일은 프레임워크에 의해 진행된다 스프링은 객체지향적인 코드를 짜게 해준다. 의존성일반적으로 애플리케이션에서 요구하는 다양한 기능들은 여러개의 의존성을 필요로한다.의존성을 주입하는 방법은 build.gradle에서   testImplementation platform('org.junit:junit-bom:5.9.1')Junit BOM (Bill of Materials): JUnit 테스트 라이브러리의 다.. 2024. 6. 25.