영속성 컨텍스트 "엔티티를 영구 저장하는 환경"이라는 뜻 (DB의 저장이라기보다, 영속성 컨텍스트에 저장한다는 의미) EntityManager.persist(entity); - 엔티티 매니저를 통해 영속성 컨텍스트에 접근 JPA 에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 엔티티의 생명주기 비영속 (new/transient) - 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 // 객체만 생성한 상태 (비영속) Member member = new Member(); member.set~ 영속(managed) - 영속성 컨텍스트에 관리되는 상태 - DB에 저장되는게 아니다. 저장은 commit EntityManager em =..
Hello JPA - 어플리케이션 개발 H2 데이터베이스 설치 (https://sasca37.tistory.com/13?category=1218302) 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.apache.maven.plugins maven-compiler-plugin 11 11 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 javax.xml.bind jaxb-api 2.3.0 pom.xml 설정 resources - META-INF - pesistence.xml 생성 데이터베이스 방언 JPA는 특정 DB에 종속 X 가변 문자 : MySQL : VARCHAR, Oracle은 VARCH..
요구사항 분석 디자이너 : 요구사항에 맞도록 디자인하고, 디자인 결과물을 웹 퍼블리셔에게 넘겨준다. 웹 퍼블리셔 : 디자이너에서 받은 디자인을 기반으로 HTML, CSS를 만들어 개발자에게 제공한다. 백엔드 : 디자이너, 웹 퍼블리셔를 통해서 HTML 화면이 나오기 전까지 시스템을 설계하고, 핵심 비즈니스 모델을 개발한다. 이후 HTML이 나오면 이 HTML을 뷰 템플릿으로 변환해서 동적으로 화면을 그리고, 또 웹 화면의 흐름을 제어한다. 상품 관리 상품 도메인 @Getter @Setter public class Item { private Long id; private String itemName; private Integer price; //null 가능성 o private Integer quantit..
Welcome 페이지 스프링 부트에 Jar 를 사용하면 /resources/static/index.hml 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다. 로깅 스프링 부트 라이브러리는 스프링 부트 로깅 라이브러리를 포함한다. SLF4J (Logback, Log4J, Log4J2 통합) - 인터페이스 Logback - 구현체 (대부분 사용) @Slf4j // 애노테이션 설정으로 편리하게 사용 @RestController // 디폴트의 뷰 반환이 아닌 문자 반환설정 (http 바디에 담아서 전송) public class LogTestController { // private final Logger log = LoggerFactory.getLogger(getClass()); //해당..
스프링 MVC 구조 Dispatcher Servlet 스프링 MVC의 프론트 컨트롤러 (스프링 MVC에서 가장 중요 ) 부모 클래스에서 HttpServlet을 상속 받아 서블릿으로 동작한다. DispatcherServlet - FrameworkServlet - HttpServletBean - HttpServlet 스프링 부트는 DispacherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다. 자세한 경로가 우선순위가 높다. 핸들러 매핑, 핸들러 어댑터, 뷰 리졸버만 DispacherServlet에 등록하면 커스텀 컨트롤러를 만들 수 있다. 요청 흐름 서블릿이 호출되면 HttpServlet이 제공하는 service() 메서드가 호출 (서블릿 방..
MVC 프레임워크 프론트 컨트롤러 서블릿 하나로 클라이언트 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 공통 처리 가능 스프링 웹 MVC의 핵심이 프론트 컨트롤러(DispatcherServlet으로 구현되어있음) 프론트 컨트롤러 도입 - v1 public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } controllerV1 인터페이스 생성 @WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*"..
싱글톤 설정 @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } ---------------------------------------- public class MemberRepository { private Map store = new HashMap(); private static long sequence = 0L; //1. 자기 자신을 static 영역으로 가지면 객체가 하나만 존재 priv..
서블릿 서블릿 사용을 위한 프로젝트 WAR, 롬복, 스프링 웹 설치 @ServletComponentScan // 서블릿 자동 등록 @SpringBootApplication public class HelloApplication { public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } } ----------------http://localhost:8080/hello?username=kim url 입력 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @..