반응형 분류 전체보기580 [JPA] 프록시 객체 1. 프록시 객체란? - 실제 엔티티 객체 대신에 DB 조회를 지연할 수 있는 가짜 객체 - 연관 객체가 실제로 사용될 때만 DB에서 로딩해주는 지연 로딩을 이용할 때 필요하다. - 글로벌 fetch 전략을 FetchType.LAZY로 지정한 필드에 자동으로 적용되며, 프록시 객체를 직접 생성할 수도 있다. 2. 프록시 객체의 동작 1) 프록시 객체의 직접 생성 - EntityManager의 getReference() 메소드를 이용하면 DB 접근을 위임한 프록시 객체를 반환한다. Member member = em.getReference(Member.class, "member1"); - 프록시 클래스는 실제 클래스를 상속 받아서 만들어진다. 이 때 실제 객체에 대한 참조를 보관하며, 프록시 객체의 메소드를.. 2022. 8. 1. [JPA] 고급 매핑 기술 1. 객체의 상속 관계 매핑 - 객체의 상속 구조와 DB의 슈퍼타입-서브타입 관계를 매핑하는 것이다. - 부모 엔티티를 조회하면 그 자식 엔티티도 함께 조회된다. 1) 조인 전략 (1) 특징 - 엔티티들을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 그대로 받아서 기본 키이자 외래 키로 사용하는 전략이다. - @Inheritance의 strategy 속성을 InheritanceType.JOINED로 지정하면 된다. (2) 장점 - 테이블이 정규화된다. - 외래 키 참조 무결성 제약조건을 활용할 수 있다. (3) 단점 - JOIN이 많이 사용되기 때문에 복잡하고 조회 성능이 저하될 수 있다. - 데이터를 등록하는 INSERT문이 2번 실행된다. (4) 예시 - 부모 테이블 ITEM이 자식 .. 2022. 7. 28. [JPA] 일대일 매핑과 다대다 매핑 1. 일대일 매핑 1) 특징 - 둘 중 어느 곳에나 외래 키를 가질 수 있다. - 객체 매핑에 @OneToOne 어노테이션을 사용하고 DB의 외래 키에는 유니크 제약 조건을 건다. - 예시로 직원과 사물함의 관계가 있다. 2) 외래 키 전략 (1) 주 테이블에 외래 키를 두는 방법 - 외래 키를 객체 참조와 비슷하게 사용할 수 있음 (2) 대상 테이블에 외래 키를 두는 방법 - 테이블 관계가 일대일에서 일대다로 변경되어도 테이블의 구조를 유지하기 쉬움 - 단방향으로는 불가능한 전략이기 때문에 양방향으로 서로 참조하고 있어야 한다. 2. 다대다 매핑 1) 특징 - 일반적으로 연결 엔티티를 추가하여 일대다/다대일 관계로 분리한다. - 결론부터 말하자면, [4) 연결 엔티티에 새로운 기본 키를 부여하는 방식].. 2022. 7. 26. [팀 프로젝트] SQL 교육 사이트 - 20220724 안내 사항 1. 어제 통보사항 정리 - 세밀한 역할 분담은 진행 중에 윤곽을 잡아볼 예정이고 현재는 프론트엔드, 백엔드, 데브옵스 역할로 나누었다. 프론트엔드 : 우xx, 김xx 백엔드 : 전원 데브옵스 : 이xx - 현재 팀장은 깔끔한 JPA코드 작성법을 익히기 위해 JPA를 각잡고 파고 있음. 최대한 빨리 끝내보려고 노력중임 - https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 에 있는 SQL 문제들을 종류별로 2문제 이상씩은 풀어볼 것 - 추가했으면 하는 기능이나 아이디어는 이 글에 댓글로 적기 - 공공 데이터 포탈 가입해두기 2. 추후 계획 - 7월 31일까지 개인 학습 기간을 갖고 8월 초부터 실제 작업을 진행할 예정 - 8월 1.. 2022. 7. 24. [Spring] View의 종류와 다양한 전략 1. View의 종류 1) InternalResourceView return new ModelAndView("/WEB-INF/view/home.jsp", model); - RequestDispatch의 forward() 또는 include()를 이용하는 방법이다. - 주로 JSP 서블릿을 통해 JSP 뷰를 작성할 때 사용한다. - InternalResourceView의 서브클래스인 JstlView는 지역정보(Locale)에 따라 달라지는 지역화된 메시지를 JSP 뷰에 출력할 수 있게 해준다. ※ 지역정보가 한국으로 설정되어 있다면 messages_ko.properties 파일의 내용 JSTL의 태그로 출력할 수 있다. 2) RedirectView return new ModelAndView(new Redi.. 2022. 7. 22. [팀 프로젝트] SQL 교육 사이트 - 20220718 안내 사항 1. 발생한 문제 해결 1) Intellij에서 Git 기능을 사용하려고 하면 repository를 찾을 수 없다는 문제 - Intellij 메뉴의 [File]->[Settings]->[Version Control]->[Git] 에서 Use credential helper 체크 2) 팀장이 아닌 팀원이 Merge pull request, push를 통해 master branch에 직접 접근할 수 있었던 점 - 팀원에게 write 권한이 있었음 3) 문자 인코딩 방식이 UTF-8으로 잘 설정 되었음에도 한글이 깨지는 문제 - SDK 버전 설정을 바꿨다가 다시 되돌리고나서 해결되는 케이스가 있음 2. 주의 사항 - 팀원이 자신의 PR(Pull Request)에 대하여 "Merge pull request"를 .. 2022. 7. 18. [Spring] Controller의 종류와 다양한 전략 1. Controller의 종류 1) Servlet - javax.servlet.Servlet을 상속한 클래스를 컨트롤러로 사용한다. @Component("/home") // bean 이름을 이용한 핸들러 매핑 방식 이용 public class HomeServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } } - Servlet을 DispatcherServlet에 연결해주기 위해 SimpleServletHandlerAdapter가 bean으로 등록되어 있어야 한다. - 서블릿 클래스 코드를.. 2022. 7. 16. [Spring] 웹 프레젠테이션 계층 테스트 이번 포스팅에서는 프로젝트를 서버에 배치하지 않은 채로 웹 프레젠테이션 계층을 쉽게 테스트할 수 있는 방법을 알아볼 것이다. 1. 서블릿 테스트용 Mock 오브젝트 1) MockHttpServletRequest (1) 생성 - HttpServletRequest는 HTTP의 요청정보를 담은 객체다. - 다음과 같이 HTTP 메소드와 URI를 포함하여 생성하면 된다. MockHttpServletRequest request = new MockHttpServletRequest("GET", "/home"); (2) 유용한 메소드 - void setParameter(String name, String value) : String형 파라미터를 지정 - void setAttribute(String name, Objec.. 2022. 7. 14. [Spring] DispatcherServlet의 DI 전략 1. DispatcherServlet의 소개 및 역할 - DispatcherServlet은 클라이언트로부터 최초로 요청을 받는 프론트 컨트롤러 역할을 하는 서블릿으로, 이 곳을 기점으로 작업을 분배하게 된다. - Spring의 웹 기술을 구성하는 다양한 전략을 DI로 구성해서 동작 방식을 확장하도록 만들어져 있다. - 대부분의 상황에 적절하게 사용될 수 있는 전략들이 기본적으로 설정되어 있으며, 이 디폴트 전략들은 spring-webmvc.jar에 들어 있는 DispatcherServlet.properties 설정파일로부터 가져온다. - 설정 파일에 명시적으로 DispatcherServlet의 전략 bean을 등록하면 DispatcherServlet의 디폴트 전략은 무시된다. - Spring 3.0에서는.. 2022. 7. 13. 이전 1 ··· 11 12 13 14 15 16 17 ··· 65 다음