공부기록

    JPA-값타입

    JPA-값타입

    기본값 타입 자바 기본타입 - int, double Wrapper 클래스 - Integer, Long String 생명주기를 엔티티에 의존하고 절대로 공유하면 안된다--> 다른 객체에서 값을 변경했는데 같이 변경될 수 잇음 임베디드 타입 새로운 값 타입을 정의하여 사용하는 것이다 C, C++에서 구조체를 정의하여 사용하는 것과 비슷하다고 생각된다 @Embeddable public class Address { private String city; private String street; private String zipcode; } @Embedded private Address address; 위 코드와 같이 임베디드 타입은 선언부에 @Embeddable, 사용하는 곳에 @Embedded을 표시해 주어야 ..

    JPA-프록시

    프록시 실제 클래스를 상속받아서 만들어진 가짜 객체 객체를 DB에서 찾을 때와는 다르게 em.persist()가 아닌 em.getReference()를 이용해서 조회를 한다 메서드명에서 보는거와 같이 무언가(실제 객체)를 참조를 하고 있는 객체이다 프록시 객체는 getXXX()처럼 실제로 처음 사용이 될때 값이 초기화가 된다 이미 영속성 컨텍스트에 찾는 객체가 있으면 실제 엔티티 반환된다 초기화 과정 getXXX()처럼 실제로 사용 영속성 컨텍스트에 초기화 요청 DB조회 실제 Entity생성 실제 객체를 참조하고 있는 target.getXXX()실행 org.hibernate.Hibernate.initialize(프록시객체);을 이용하여 강제로 직접 초기화 할 수 있다 즉시로딩 지연로딩 설정 방법 @XXX..

    Spring-MVC4 에러검증2

    에러 검증 Bean Validation 이전에 사용했던 Validator를 상속받아 사용했던 특정 검증기와는 다르게 검증 어노테이션을 이용하여 검증을 하는 방식이다 설정 xml 설정방법 스프링 관련 설정 : @EnableWebMvc어노테이션을 사용하면 OptionalValidatorFactoryBean을 글로벌 validator로 등록 dependency 설정: maven javax.validation validation-api 2.0.1.Final org.hibernate hibernate-validator 7.0.2.Final dependency 설정: gradle implementation 'javax.validation:validation-api:2.0.1.Final' 참고 http..

    JPA-고급매핑2

    복합키와 식별 관계 매핑 식별관계: 부모테이블의 pk를 자식테이블의 pk겸 fk로 사용되는 경우 비식별관계: 부모테이블의 pk를 자식테이블의 fk로 사용되고 개별 pk가 존재하는 경우 @IdClass 식별자 클래스 조건 식별자 클래스 속성명과 사용하는 클래스 속성명이 같아야 한다 Serializable 인터페이스 구현 - 왜 구현을 해야하는지 아직은 잘 모르겠음 추가 공부 기본생성자, equals, hashCode 구현 public으로 클래스 지정 @EmbeddedId IdClass와 다르게 식별자 클래스 자체를 기본키로 매핑을 한다 --> 보다 더 객체 지향스러운 느낌 식별자 클래스 조건 @Embeddable어노테이션 사용 Serializable 인터페이스 구현 - 왜 구현을 해야하는지 아직은 잘 모르..

    JPA 고급매핑1

    상속관계 매핑 객체의 상속구조를 DB의 슈퍼타입 서브타입관계로 매핑을 하는 것이다 조인 전략 단일 테이블 전략 개별 테이블 전략 조인전략 @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn//생략가능 @Inheritance 어노테이션을 이용하여 join전략으로 전략을 선택을 하면 된다 @DiscriminatorColumn 어노테이션은 자식 테이블을 구별을 할 수 있도록 도와주는데 default값은 DTYPE으로 컬럼명이 정해진다 자식 테이블 구분 컬럼 값을 직접 지정을 하고 싶으면 @DiscriminatorValue("값")을 자식 객체에 지정을 해주면 해당 값으로 칼럼 값이 지정이 된다 default로는 객체 명 사용 자식 테이블의..

    Spring MVC3 - Error검증

    에러 검증 Validator 컨트롤러에서 아래 검증기를 호출을 하여 만약 에러가 있다면 특정 페이지로 이동 혹은 다시 페이지 호출 등 행동을 취할 수 있다. public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return true; } @Override public void validate(Object target, Errors errors) { //검증 로직 /* * 아이디 공백이 아닌지 * 비밀번호 공백이 아닌지 * 정확한 값 타입이 입력이 되었는지 등등 * 필요한 검증 로직 들어가면 됨 */ } } BindingResult, Errors BindingResult는 Errors..

    Spring MVC2

    메세지 사용이유 다양한 화면에서 하나의 텍스트 메세지를 한 곳에서 관리하고 사용하도록 하기 위해서 사용된다 메세지 설정방법 resources파일 아래에 messages.properties파일을 만들어서 안에 key-value형식으로 값을 설정을 해둔다 메세지 사용방법 @Configuration public class MessageConfigJava { @Bean public MessageSource messageSource(){ ResourceBundleMessageSource message = new ResourceBundleMessageSource(); message.setBasenames("messages", "messages_en"); message.setDefaultEncoding("utf-8"..

    Spring MVC1

    Spring MVC1

    Spring MVC기본 흐름 구성 요소 설명 DispatcherServlet 클라이언트 요청 전달받는다 컨트롤러로부터 view전달받아 응답 생성 HandlerMapping 요청 URL로부터 어떤 컨트롤러를 사용할 지 결정 HandlerAdapter 처리 요청을 컨트롤러에 전달 Controller 로직 처리 (개발자 구현 부분) ViewResolver 물리적인 경로를 논리적 경로로 변경 View JSP thymeleaf html등 화면 구성 (개발자 구현 부분) HandlerMapping, HandlerAdapter 구현객체 태그를 이용해서 설정 ViewResolver 구현객체 만약 전달받은 물리적 경로가 hello면 /WEB-INF/views/hello.jsp로 반환되어 전달 컨트롤러 구현 모든 컨트롤러..

    Spring MVC 세팅

    Spring MVC 프로젝트 기본 세팅 dispatcher-servlet.xml web.xml contextConfigLocation /WEB-INF/applicationContext.xml org.springframework.web.context.ContextLoaderListener dispatcher org.springframework.web.servlet.DispatcherServlet 1 dispatcher / pom.xml 4.0.0 org.example SpringMVC 1.0-SNAPSHOT 11 11 javax.servlet.jsp jsp-api 2.2 provided javax.servlet javax.servlet-api 4.0.1 provided javax.servlet jstl 1..

    JPA 연관관계 매핑

    JPA 연관관계 매핑

    JPA공부함에 있어서 내용은 인프런 김영한님 강의와 책을 참고하여 정리한 것입니다 (필기 및 공부정리용) https://www.inflearn.com/course/ORM-JPA-Basic# 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔 www.inflearn.com 연관관계 매핑 객체의 참조와 테이블의 외래키를 매핑 테이블에서는 외래키를 사용해서 각각의 테이블의 값을 가져올 수 있지만 객체를 단순히 테이블매핑해서 생성을 한다면 값을 참조가 불가능하다 Team team = new Team..