분류 전체보기
-
Javascript - Date객체와 사용법개발/Javascript 2023. 11. 13. 17:20
javascript의 Date객체는 자주 사용되는 객체지만 종종 잊어먹는 경우가 있어 정리하고자 합니다. JavaScript Date 객체는 시간의 한 점을 플랫폼에 종속되지 않는 형태로 나타냅니다. Date 객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값을 담습니다. JavaScript 날짜의 기반은 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초 단위로 나타낸 것으로, 날짜와 시간의 컴퓨터 기록물을 대부분 차지하고 있는 UNIX 시간(UNIX epoch, 1970년 1월 1일 자정과의 시간 차이를 초 단위로 나타냄)과는 다릅니다. 1. Date 객체를 만드는 여러 방법 let today = new Date(); // 생성 순간의 날짜와 시간 ..
-
@Document에서 ObjectId를 id로 사용하는법개발/SpringDataMongoDB 2023. 10. 24. 10:15
MongoDB에는 ObjectId 타입을 지원하는데 Primary Key와 같은 고유한 키를 의미합니다. Collections에 데이터를 넣을때 ObjectId를 직접 넣어주지 않는 이상 자동으로 값이 부여되며 모든 Document 들은 각각의 ObjectId가 생긴다. 만약 ObjectId를 형식에 맞지않게 넣는다거나 중복된 값을 넣게될 경우 예외가 발생됩니다. ObjectId의 구조 ObjectId는 3개의 영역으로 나뉘어져 있습니다. 첫번째 4byte는 Unix epoch 이후 초 단위로 측정된 ObjectId의 생성을 나타내는 4바이트 타임스탬프 값 두번째 5byte는 프로세스당 한 번 생성 되는 5바이트 임의 값이며 이 임의 값은 기계와 프로세스에 고유 세번째 3byte는 임의의 값으로 초기화 ..
-
Base64 Image를 Javascript File객체로 변환개발/Javascript 2023. 10. 18. 15:55
회사에서 운영중인 사이트에 사용자가 게시글을 입력하는 기능이 있습니다. 웹에디터를 따로 사용하지 않고 contentseditable 을 이용하여 에디터 처럼 사용하고 있는데, 여기에 이미지 파일을 첨부파일 형태로 올리거나, 다른 사이트의 이미지를 복사해서 붙여넣는것도 가능한데 생각지도 못한 부분에서 예외 상황이 발생했습니다. 그렇습니다. Base64였습니다. PC 카카오톡 방에 있는 사진 파일을 내려받아서 올리는게 아닌 복사해서 붙여넣고 글 작성을 했더니 Base64 형태로 이미지가 전송되었는데, 서버로 전송된 요청이 연관된 connector에 설정된 maxPostSize의 한계치를 초과하는 파라미터 데이터로 전송되게 되었습니다. 이를 서버에서 수정을 할지 Front에서 수정을 할 지 고민을 해 보았는데..
-
JPA 기본키 매핑 전략개발/JPA 2022. 7. 20. 12:21
JPA가 제공하는 데이터베이스 기본키 생성 전략은 다음과 같습니다. 직접할당 : 기본 키를 애플리케이션에서 직접 할당한다. 자동생성 : 대리 키 사용 방식 - IDENTITY : 기본 키 생성을 데이터베이스에 위임ㅎ나다. - SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다. - TABLE : 키 생성 테이블을 사용한다. 자동 생성 전략이 이렇게 다양한 이유는 데이터베이스 벤더마다 지원하는 방식이 다르기 떄문입니다. 예를 들어 오라클 데이터베이스는 시퀀스를 제공하지만 MySQL은 시퀀스를 제공하지 않습니다. 따라서 SEQUENCE나 IDENTIFY 전략은 사용하는 데이터베이스에 의존합니다. TABLE 전략은 키 생성용 테이블을 하나 만들어두고 마치 시퀀스처럼 사용하는 방법입니다. 이 ..
-
@Table개발/JPA 2022. 7. 19. 22:15
@Table은 엔티티와 매핑할 테이블을 지정합니다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용합니다. 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용합니다. catalog catalog 기능이 있는 데이터베이스에서 catalog를 매핑합니다. schema schema 기능이 있는 데이터베이스에서 schema를 매핑합니다. uniqueConstraints DDL 생성 시에 유니크 제약조건을 만듭니다. 2개 이상의 복합유니크 재약조건도 만들 수 있습니다. 참고로 이 기능은 스키마 자동 생성 기능을 사용해서 DDL을 만들 때만 사용됩니다. 출처 : 자바 ORM 표준 JPA 프로그래밍(김영한 저)
-
@Entity개발/JPA 2022. 7. 19. 22:10
JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 합니다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 만약 다른 패키지에 이름이 같은 엔티티 클래스가 있다면 이름을 지정해서 충돌하지 않도록 해야 한다. 설정하지 않으면 클래스 이름을 그대로 사용한다 (ex. Member). @Entity 적용 시 주의사항은 다음과 같습니다. 기본 생성자는 필수 final 클래스, enum, interface, inner 클래스에는 사용할 수 없습니다. 저장할 필드에 final을 사용하면 안됩니다. JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 합니다. 출처 : 자바 ORM 표준 JPA..
-
쿠키와 세션의 차이점개발/WEB 2022. 7. 18. 22:48
쿠키와 세션이 필요한 이유 HTTP의 특징 HTTP 통신의 특징은 Connectionless와 Stateless라고 할 수 있습니다. Connectionless(비 연결지향) 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성이 있습니다. (HTTP1.1에서 Connection 헤더에 keep-alive라고 설정하면 컨넥션을 유지할 수 있습니다) Stateless(상태정보유지안함) HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없습니다. 이를 Stateless하다고 합니다. 만약 로그인을 하고 그 상태를 유지한 채로 웹 서비스를 제공하려면 어떻게 해야할까요? HTTP프로토콜에서 상태를 유지하기 위해 쿠키와 세션이라는 방법이 존재합니다...
-
영속성과 영속성컨택스트개발/JPA 2022. 7. 13. 11:03
JPA에서의 영속성 JPA의 핵심 내용은 엔티티가 영속성 컨텍스트에 포함되어 있냐 아니냐로 갈립니다. JPA의 엔티티 매니저가 활성화된 상태로 트랜잭션(@Transactional) 안에서 DB에서 데이터를 가져오면 이 데이터는 영속성 컨텍스트가 유지된 상태입니다. 이 상태에서 해당 데이터 값을 변경하면 트랜잭션이 끝나는 시점에 해당 테이블에 변경 내용을 반영하게 됩니다. 따라서 우리는 엔티티 객체의 필드 값만 변경해주면 별도로 update()쿼리를 날릴 필요가 없게 됩니다. 이 개념을 더티 체킹이라고 합니다. 영속상태란, 영속성 컨텍스트가 관리하는 엔티티 결국 영속 상태라는 것은 영속성 컨텍스트에 의해 관리된다는 뜻이 됩니다. 영속성 컨텍스트란? 영속성 컨텍스트(persistence context) 는 ..