본문 바로가기

컴퓨터

(98)
[자바 ORM 표준 JPA 프로그래밍] - 엔티티 매핑 엔티티 매핑의 종류 1. 객체와 테이블 : @Entity, @Table 2. 필드와 컬럼 : @Column 3. 기본 키 : @Id 4. 연관관계 : @JoinColumn 등 객체와 테이블 매핑 @Entity - JPA가 관리하는 엔티티라는 의미 - 기본 생성자가 필수 (파라미터가 없는 public 또는 protected 생성자) - final, enum, interface,inner 클래스에는 사용할 수 없다. - 데이터베이스에 저장하고 싶은 필드에는 final을 사용하면 안된다. * 속성 - name : JPA에서 사용할 엔티티 이름 지정, 기본값으로 클래스 이름을 그대로 사용한다. @Table - 엔티티와 매핑할 테이블을 지정한다. * 속성 - name : 매핑할 테이블 이름을 지정한다. - cat..
[자바 ORM 표준 JPA 프로그래밍] - 영속성 관리 영속성 컨텍스트란? - "엔티티를 영구 저장하는 환경" - EntityManager.persist(entity) : db에 저장하는 것이 아닌 영속성 컨텍스트에 저장한다는 의미 - 논리적인 개념으로 EntityManager를 통해 접근한다. - EntityManager를 생성할 때 하나 만들어진다. em.persist(member); ** 엔티티 메니저를 사용하여 회원 엔티티를 영속성 컨텍스트에 저장하는 코드 엔티티의 생명주기 비영속(new/transient) : 새로운 상태(new), 영속성 컨텍스트와 관계가 없다. Member member = new Member(); 영속(managed) : 영속성 컨텍스트에 관리되는 상태, DB에 저장되지는 않는다. em.persist(member); 준영속(det..
[java] int와 Integer? 자바 코딩테스트를 준비하면서 헷갈렸던 점을 정리하려고 한다. 자바 프로젝트를 하고있지만서도.. 알고리즘 문제를 풀면서 새롭게 공부하거나 알게되는 사실들이 많은 것 같다. 자바의 자료형은 크게 기본 타입과 참조 타입으로 나누어진다. 기본 타입은 char, int, boolean 등을 포함하며 참조 타입은 class, interface 등을 포함하는데 종종 기본 타입 데이터를 객체로 표현해야 하는 경우가 생긴다. 이때, 기본 자료 타입(primitive type)을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라 한다. wrapper class : 객체가 기본 데이터 유형을 포함하는 클래스 int 우슨 int는 변수의 타입이다. 즉, 원시적인 자료형으로 메소드를 가지지 못한다..
[java] BufferedReader, BufferedWriter 자바로 알고리즘 공부를 시작하면서 Scanner보다 빠른 입출력이 가능한 BufferedReader와 BufferedWriter을 공부하였고 정리해보려고 한다. 파이썬도 기존의 input() 대신 빠른 입력을 위해 sys.stdin.readline()을 사용했었는데 자바도 비슷한 원리인 것 같다. BufferedReader와 BufferedWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수로 버퍼를 사용하지 않는 입력은 키보드의 키를 누름과 동시에 바로 프로그램에 입력이 전달되지만 버퍼를 사용하는 입력은 버퍼로 전송한다. 버퍼가 다 차거나 개행 문자 등이 나타날 경우 버퍼의 내용을 한번에 프로그램에 전달한다. Scanner는 사용하기 쉽지만 버퍼사이즈가 1024char로 매우 작기 때문에 입력의 크기..
STS(Spring Boot)- UsernameNotFoundException이 BadCredentialsException으로 나오는 문제 원인 파악 spring security를 사용하여 로그인 로직을 개발하던 중 마주한 문제였다. 문제 상황은 다음과 같다. 데이터베이스에 없는 유저가 로그인을 시도 했을 때 UsernameNotFoundException이 아닌 BadCredentialsException으로 예외처리가 됐다. 그래서 왜 그런지 코드를 살펴보았다. [userDetailService] @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = userMapper.getAuthInfo(username); if (user == null) { throw new UsernameNotFoundException..
STS(Spring Boot) - The type javax.servlet.Filter cannot be resolved. It is indirectly referenced from required type org.sitemesh.config.ConfigurableSiteMeshFilter 해결 사이트매쉬를 설정하면서 마주한 에러였다. The type javax.servlet.Filter cannot be resolved. It is indirectly referenced from required type org.sitemesh.config.ConfigurableSiteMeshFilter 웹 애플리케이션에서 servlet 필터가 클래스 패스에 존재하지 않거나 가져오지 못해 발생한 에러로 Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기 (tistory.com)을 참고하여 서블릿을 업그레이드 한 후 의존성을 추가해주었더니 해결되었다.! ** 의존성 추가 후 꼭 install 후 재실행을 하자
[python] 누적 곱 구하기 코테 문제를 풀면서 리스트의 모든 원소의 누적합이나 누적곱을 구해야 하는 경우가 많다. 그래서 누적곱을 쉽게 구하는 방법을 정리하였다. 1. reduce 사용 - 리스트 내의 요소를 순차적으로 누적 계산한 결과를 리턴해준다. from functools import reduce ## 방법 1 - 함수 사용 def func(x,y): return x*y reduce(func, [1,4,2,5]) ## 방법 2 - 람다 사용 reduce(lambda x,y : x*y , [1,4,2,5]) 2. prod 사용 - math 라이브러리의 prod를 사용하여 구한다. from math import prod print(prod([1,4,2])) # 8
STS (Spring Boot) - 폴더 안의 jsp 파일 디자인 적용 안됨 해결 사이트 매쉬를 설정하고 폴더를 나눈 뒤 사용할 페이지를 정리하였는데 폴더를 사용하지 않은 views 하위의 index나 errorPage는 디자인 설정이 반영되지만 폴더를 사용하였을 때에는 전혀 반영되지 않았다. 사이트매쉬 필터 문제도 아니었다. 한참을 삽질하다가 이유를 알아냈다. url에서 절대경로가 아닌 상대 경로를 썼기 때문이다. 나는 부트스트랩의 모든 디자인 파일들을 frontLayer라는 폴더 안에 넣어놨고 그래서 사용할 페이지들의 경로를 frontLayer/.. 처럼 수정해주는 작업을 했었다. 그런데 앞에 /를 붙이지 않아 상대경로로 접근하여 즉, 현재 페이지나 파일을 기준으로 해당경로로 이동하였기 때문에 디자인 파일 적용이 되지 않았던 것이다. 절대 경로를 사용해야 웹어플리케이션의 루트 디렉..

728x90