전체 글

·Server
index.jsp /WEB-INF/views/list.jsp  서버를 실행시키고 "localhost:8080/" 으로 접속시, 먼저 가장 첫번째 인 index.jsp를 불러온다. 하지만 index.jsp가 나오지 않고 자꾸 톰캣의 시작페이지만 나왔다... 난 두가지 방법 모두 사용하고 오류를 해결할 수 있었다.오류 해결 - @RequestMappingcontroller에 @RequestMapping에 경로를 "/"로 잡은 항목이 있으면 해당 항목이 가장 상위페이지("localhost:8080/")가 된다.따라서 해당 부분을 주석처리 해주었다. 오류 해결 - 8080 포트 shutdownlifecyclebase.handlesubclassexception 구성요소 [connector["ht..
·Server
오류 원인이 오류는 대부분 경로문제라고 한다. 나는 다음에 나오는 3가지 방법을 다 써서 오류를 고칠 수 있었다. 오류 해결 - context root대부분 tomcat의 context root의 경로가 틀렸기 때문에 에러가 났다고 한다.따라서 Application context를 /로 바꾸었는데도 에러는 고쳐지지 않았다. 오류 해결 - web, WEB-INF web 폴더에 직접적으로 존재하는 jsp 파일은 브라우저로 직접 접근이 가능하다.하지만 WEB-INF 하위의 jsp 파일은 브라우저에서 직접 접근이 불가능한 경로라는 것이다...!!! web과 WEB-INF 폴더의 차이를 알아보자. webWEB-INF장점web 하위에 있을 경우 바로 jsp 파일을 볼 수 있다. 유저의 직접 접근이 어려워 보안성이 ..
·Server
오류 원인, 해결mac 터미널로 EC2에 접속하려고 했으나.. 자꾸 오류가 떴다.오류는 .ssh 파일에 안 들어가지는 것!!!!cd: not a directory: ~/.ssh 구글링을 해보니 ssh 키가 생성이 안되었다면 파일이 없을 수 있다는 것이었다.그래서 파일을 생성해보려해도.. mkdir: ~/.ssh: File exists 파일이 이미 존재한다는 것..!  도대체 파일이 존재하는데 왜 안들어가지고 파일을 수정할 수도 없는 거지..?라고 생각하고,ssh 키를 생성하려고 하자 내가 만날 수 있는 모든 에러를 맞닥뜨리고 난 뒤...ssh 파일을 지워버리기로 결정했다.  다시 .ssh 파일을 생성하고 보니까 생성된 파일은 실행파일이 아니었던 것이다.. 지금까지 Unix 실행 파일 가지고 이리저리 해보..
·Server
JPA로 테이블과 엔티티를 매핑할 때, @Id와 @Column 어노테이션을 활용하여 테이블의 PK를 매핑시킬 수 있다. public class CustomerEntity { @Id @Column(name = "customer_id") private Long customer_id;} 하지만 식별자로 사용될 값을 일일히 수동으로 넣어줘야 하는 불편함이 있는데, 이는 @GeneratedValue로 해결할 수 있다. @GeneratedValue식별자 값을 자동 생성 시켜줄 수 있다. @GeneratedValue에는 4가지 옵션이 존재한다.@GenerationType. AUTOhibernate.dialect에 설정된 DB 방언 종류에 따라, 하이버네이트가 자동으로 전략을 선택하게끔 위임한다. 데이..
·Database
ANSI SQLSQL(Structured Query Language)란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. DBMS Vendor(벤더, 공급업체)란 MS-SQL, Oracle, MySQL, PostgreSQL 등 DBMS을 개발하고 판매하는 기업을 말한다. 각 DBMS Vendor에서는 자신만의 기능을 추가한 SQL이 있다.  그림에서 볼 수 있듯이, ANSI SQL이 모든 DBMS에서 공통으로 사용가능한 핵심 표준 SQL이다.ANSI : 미국 표준 협회 ANSI SQL 특징표준 SQL문이기 때문에 특정 DBMS의 종류에 제약을 받지 않는다.가독성이 일반 Query보다 좋다. 마치 대한민국의 서울에서 사용하는 표준어가 있고, 충청, 강원, 제주, 경상 등 여러 지방에..
·Server
영속성 컨텍스트 #1편 보러가기 오늘은 1편에 이어서 영속성 컨텍스트 2편을 포스팅해보려 한다. 영속성 컨텍스트 특징1차 캐시동일성(identity) 보장트랜잭션을 지원하는 쓰기 지연(transactional write-behind)변경 감지 (Dirty Checking)지연 로딩 (Lazy Loading) 영속성 컨텍스트는 식별자 값으로 엔티티를 구분한다.따라서 영속 상태는 식별자 값(@Id로 테이블의 기본키와 매핑한 값)이 반드시 있어야 한다! 영속성 컨텍스트에 엔티티를 저장하고 트랜잭션을 commit 하는 순간에 DB에 반영하는데, 이것을 플러시(flush)라고 한다.   엔티티 조회영속성 컨텍스트 내부에는 1차 캐시를 가지고 있다.영속 상태 엔티티는 모두 이곳에 저장된다.// 객체를 생성한 상태(..
·Server
JPA를 통해 회원의 id(기본키)를 생성하고, username과 password를 저장하는 간단한 예제이다. 코드를 파헤쳐보도록 하자! JPA가 생소하다면 -> JPA 알아보기   Customer Entity@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructor@Builder@Entity@Table(name = "customer")public class CustomerEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "customer_id") private Long customer_id; @Column(..
·Server
오류 원인MySQL에서 drop table로 테이블 삭제 시, 다른 테이블에 외래키가 걸려있다고 삭제가 되지 않는 경우이다. 하지만 drop table 쿼리 명령을 하지 않았는데 왜 테이블이 삭제된다고 하지?? 라는 의문이 있었는데... 원인을 찾았다. application.propertiesspring.jpa.hibernate.ddl-auto=create  이 부분이 create로 설정되어 있었다.create는 애플리케이션을 실행할 때 마다 모든 테이블을 제거하고 다시 생성하기 때문에, 이 부분에서 오류가 났다. 몇가지 옵션이 있는데, 어떤 것으로 설정할지는 개발자의 자유다.표로 옵션을 알아보자.create애플리케이션 실행 시 모든 테이블을 제거하고 다시 생성합니다.create-drop애플리케이션 실행..
YugyeongChoi
개발자의 소소한 행보