본문 바로가기

전체 글147

JPA JPA 영속성 관리 EntityManager Factory(1)-> EntityManager(N) 생성-> PersistenceContext(1) 커넥션풀-> db 엔티티 생명주기: 비영속(new),영속(persist,merge),준영속(detach,clear,close),삭제(remove) 이점:1차 캐시,동일성(같은 트랜잭션 안),쓰기 지연,변경 감지(엔티티와 스냅샷 비교),지연 로딩 플러시: 직접flush,트랜잭션 커밋,JPQL 쿼리 실행, 옵션 setFlushMode(FlushModeType.COMMIT/AUTO) 엔티티 매핑 객체와 테이블 매핑: @Entity(기본 생성자 필수), @Table(name,catalog,schema,uniqueConstraints) 필드와 컬럼 매핑: @Column.. 2022. 7. 3.
SQL 문법 정리 select select * from 테이블명; 테이블 구조 참조 desc 테이블명; 열 지정 select no, name from 테이블명; 행지정 where select * from sample where no=2; select * from sample where name='a'; select * from sample where name is null; 아닌 행 select * from sample no 2; and select * from sample where a0 and b0; or select * from sample where a0 or b0; % 임의의 문자열 _ 임의의 문자 하나 like select * from sample where text like 'sql%'; 이스케이프 selec.. 2022. 6. 25.
[스프링 부트와 JPA 활용] 웹 애플리케이션 개발 도메인 분석 설계 //Member @OneToMany(mappedBy = "member")//mappedBy 연관관계주인 아님 private List orders = new ArrayList(); //Order @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; //주문 회원 //==연관관계 메서드==// public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem.. 2022. 6. 22.
파일 업로드 파일 업로드 enctype="multipart/form-data" 여러 파일과 폼의 내용을 함께 전송 서블릿 파일 업로드 application.properties에 file.dir=C:/file/ //컨트롤러에 등록 @Value("${file.dir}") private String fileDir; //파일 저장 if (StringUtils.hasText(part.getSubmittedFileName())) { String fullPath = fileDir + part.getSubmittedFileName(); part.write(fullPath); }스프링 파일 업로드 @RequestParam MultipartFile file if (!file.isEmpty()) { String fullPath = fi.. 2022. 6. 21.
타입 컨버터 타입 컨버터 스트링으로 들어옴->직접 타입 변환 String data = request.getParameter("data") 스프링이 중간에서 타입 변환 @RequestParam Integer data @ModelAttribute UserData data @PathVariable("userId") Integer data 컨버터 구현(String->Integer) public class StringToIntegerConverter implements Converter { @Override public Integer convert(String source) { log.info("convert source={}", source); return Integer.valueOf(source); } }컨버전 서비스 개.. 2022. 6. 20.
예외 처리 예외 처리와 오류 페이지 서블릿 예외 처리 Exception-> WAS까지 예외 전달 response.sendError(404, "404 오류"); response.sendError(500); 서블릿 예외 처리 - 오류 화면 제공 //WebServerFactoryCustomizer의 customize구현 ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/error-page/404"); factory.addErrorPages(errorPage404, errorPage500, errorPageEx);오류 정보 추가 request.getAttribute(): 예외, 예외 타입, 오류 메시지, 클라이언트 요청 URI,오류가 발생한 서블릿 이름, HT.. 2022. 6. 19.