분류 전체보기
-
저의 프로젝트 배포하는 것을 공부하기 위해Docker를 이용하여 나의 프로젝트를 띄워보았습니다. 저의 프로젝트는 영한님 강의 시청 후 다른 교재를 참고하여 만들었고맛집 게시판 프로젝트이며게시글과 댓글을 crud 하는 것입니다. 프로젝트에 대해서는스프링부트 3.3.0 버전 mariadb스프링시큐리티 6 버전을 사용하였습니다. 도커 공부용으로 사용한 빈 프로젝트(간단한 컨트롤러 설계한 것)는 쉽게 띄워졌는데나의 프로젝트에 적용시켜보니 매핑이 안된다는 에러 페이지가 띄워져서처음에는 도커에 대해서 내가 올바르게 사용하지 않았나 싶어강의들을 찾아보았는데도커 쪽에서는 문제가 없어 보였습니다. 처음엔 스프링시큐리티와 도커가 충돌하는 것일까에 대한 의문을 가졌는데구글링을 해본 경과 스프링시큐리티 설정과는 관련이..
도커로 띄워지지 않는 나의 프로젝트 문제 해결(springboot + mariadb + springsecurity)저의 프로젝트 배포하는 것을 공부하기 위해Docker를 이용하여 나의 프로젝트를 띄워보았습니다. 저의 프로젝트는 영한님 강의 시청 후 다른 교재를 참고하여 만들었고맛집 게시판 프로젝트이며게시글과 댓글을 crud 하는 것입니다. 프로젝트에 대해서는스프링부트 3.3.0 버전 mariadb스프링시큐리티 6 버전을 사용하였습니다. 도커 공부용으로 사용한 빈 프로젝트(간단한 컨트롤러 설계한 것)는 쉽게 띄워졌는데나의 프로젝트에 적용시켜보니 매핑이 안된다는 에러 페이지가 띄워져서처음에는 도커에 대해서 내가 올바르게 사용하지 않았나 싶어강의들을 찾아보았는데도커 쪽에서는 문제가 없어 보였습니다. 처음엔 스프링시큐리티와 도커가 충돌하는 것일까에 대한 의문을 가졌는데구글링을 해본 경과 스프링시큐리티 설정과는 관련이..
2024.07.10 -
두 개념은 서로 연관이 있지는 않지만, 확실하게 이해하고 있지 않던 개념들을 이해하고자 글을 쓰게 되었습니다. 1. 참조형 배열 우선 자바에서 기본 타입을 사용해서 배열을 생성시엔, 배열의 요소(인스턴스)에는 값들이 저장되고, 배열 변수에는 값들의 모음(인스턴스에 접근할 수 있는 참조값)이 저장이된다. 하지만 참조 타입을 이용할 경우에는 위와 다르다. 1. 배열의 값에는 인스턴스 자체를 저장하는 것이 아니고 그 참조값(인스턴스의 주소)을 저장한다. 2. 배열 변수에는 첫번째 요소의 인스턴스 참조값이 저장된다. 3. 참조형 배열은 선언한 타입으로만 값을 넣을 수 있다. Hyunjin[] arr = new Hyunjin[3]; // 자바의 배열은 크기를 초기화 해줘야 하고, 변경은 어려움 // 위와 같은 사..
참조형 배열 + 변수의 생성 시점과 자바 메모리 모델두 개념은 서로 연관이 있지는 않지만, 확실하게 이해하고 있지 않던 개념들을 이해하고자 글을 쓰게 되었습니다. 1. 참조형 배열 우선 자바에서 기본 타입을 사용해서 배열을 생성시엔, 배열의 요소(인스턴스)에는 값들이 저장되고, 배열 변수에는 값들의 모음(인스턴스에 접근할 수 있는 참조값)이 저장이된다. 하지만 참조 타입을 이용할 경우에는 위와 다르다. 1. 배열의 값에는 인스턴스 자체를 저장하는 것이 아니고 그 참조값(인스턴스의 주소)을 저장한다. 2. 배열 변수에는 첫번째 요소의 인스턴스 참조값이 저장된다. 3. 참조형 배열은 선언한 타입으로만 값을 넣을 수 있다. Hyunjin[] arr = new Hyunjin[3]; // 자바의 배열은 크기를 초기화 해줘야 하고, 변경은 어려움 // 위와 같은 사..
2024.01.30 -
1. 리터럴과 접미사 L / F 문자열 리터럴을 제외한 byte / short / int / long / double / boolean / char 등의 리터럴은 '스택'에 일시적으로 적재되었다가 '변수'라는 메모리 공간으로 저장된다. 보통 21억이 넘어가는 매우 큰 수가 아닌 이상 4byte 크기의 공간에 적재되며, 그보다 큰 수는 8byte 공간을 사용하는데 이때 JVM에 8byte의 공간을 사용한다고 알리기 위해 접미사 L을 사용한다. 추가적으로 실수는 기본적으로 8byte 공간에 적재되며, 접미사 F를 사용하여 JVM에다 4byte의 공간을 사용하는 실수라고 알릴 수 있다. ex) (32.1531894726 != 32.1531894726F) => 실수형(8byte)과 Float 실수형(4byte)..
리터럴과 접미사 그리고 형변환1. 리터럴과 접미사 L / F 문자열 리터럴을 제외한 byte / short / int / long / double / boolean / char 등의 리터럴은 '스택'에 일시적으로 적재되었다가 '변수'라는 메모리 공간으로 저장된다. 보통 21억이 넘어가는 매우 큰 수가 아닌 이상 4byte 크기의 공간에 적재되며, 그보다 큰 수는 8byte 공간을 사용하는데 이때 JVM에 8byte의 공간을 사용한다고 알리기 위해 접미사 L을 사용한다. 추가적으로 실수는 기본적으로 8byte 공간에 적재되며, 접미사 F를 사용하여 JVM에다 4byte의 공간을 사용하는 실수라고 알릴 수 있다. ex) (32.1531894726 != 32.1531894726F) => 실수형(8byte)과 Float 실수형(4byte)..
2024.01.19 -
(* 차근차근 학습해나가는 과정이라 글 내용에 오류가 있을 수 있습니다. 피드백 주시면 반영하겠습니다.) 1. tabindex 와 모달창의 관계? (위 사진의 별점은 starrr 라이브러리(jQuery의 플러그인)를 이용하였습니다.) (위 프로젝트는 '코드로 배우는 스프링 부트 웹 프로젝트' 교재를 참고하였습니다.) $(".reviewModal").modal("show"); 위와 같이 모달창을 띄우도록 js코드를 작성하던 중, 저 코드를 주석처리하지 않으니 글 작성 후 저장이나 수정을 해도 모달창이 사라지지 않는 현상이 발생했다. 작성한 값들은 잘 넘어가고 화면에도 정상적으로 반영되었으나, 모달창만 어째서인지 계속 띄워지는 현상이었다. 해결은 주석처리로 간단하게 해결되었으나, 필요한 모달창들에는 tabi..
추천 게시판 디자인과 값 넘기기 중 부딪힘 (모달창)(* 차근차근 학습해나가는 과정이라 글 내용에 오류가 있을 수 있습니다. 피드백 주시면 반영하겠습니다.) 1. tabindex 와 모달창의 관계? (위 사진의 별점은 starrr 라이브러리(jQuery의 플러그인)를 이용하였습니다.) (위 프로젝트는 '코드로 배우는 스프링 부트 웹 프로젝트' 교재를 참고하였습니다.) $(".reviewModal").modal("show"); 위와 같이 모달창을 띄우도록 js코드를 작성하던 중, 저 코드를 주석처리하지 않으니 글 작성 후 저장이나 수정을 해도 모달창이 사라지지 않는 현상이 발생했다. 작성한 값들은 잘 넘어가고 화면에도 정상적으로 반영되었으나, 모달창만 어째서인지 계속 띄워지는 현상이었다. 해결은 주석처리로 간단하게 해결되었으나, 필요한 모달창들에는 tabi..
2024.01.17 -
0.서론 - JPA는 ORM(Object–relational mapping)이며 객체 지향과 Database간 발생하는 차이를 매핑 (SQL중심적 개발에서 객체 중심으로 개발할 수 있게 됨) - JPA는 JDBC API를 통해서 DB에 접근(java application과 JDBC API 사이에 존재) - JPA는 인터페이스의 모음이며 HIbernates는 그 구현체 (Hibernates를 제외하고도 , EclipseLink, DataNucleus존재) - Entity는 DB 테이블과 매핑되는 객체같은 개념 - 영속성 컨텍스트(Persistence Context)는 엔티티의 영속화에 관여하며, 엔티티들이 DB로 바로 가지 않고, 엔티티를 저장하는 환경으로서의 역할을 함 - 영속성 컨텍스트의 장점 >> 1..
JPA - @PersistenceContext0.서론 - JPA는 ORM(Object–relational mapping)이며 객체 지향과 Database간 발생하는 차이를 매핑 (SQL중심적 개발에서 객체 중심으로 개발할 수 있게 됨) - JPA는 JDBC API를 통해서 DB에 접근(java application과 JDBC API 사이에 존재) - JPA는 인터페이스의 모음이며 HIbernates는 그 구현체 (Hibernates를 제외하고도 , EclipseLink, DataNucleus존재) - Entity는 DB 테이블과 매핑되는 객체같은 개념 - 영속성 컨텍스트(Persistence Context)는 엔티티의 영속화에 관여하며, 엔티티들이 DB로 바로 가지 않고, 엔티티를 저장하는 환경으로서의 역할을 함 - 영속성 컨텍스트의 장점 >> 1..
2023.05.15 -
- Entity는 반드시 파라미터가 없는 생성자(기본 생성자)가 있어야 함 (public 또는 protected) - 기본 생성자가 필요한 이유는 스프링 데이터 JPA 에서 엔티티에 동적으로 객체 생성시 JAVA Reflection API를 활용하기 때문 (JPA는 DB 값을 객체 필드에 주입할 때 기본 생성자로 객체를 생성한 후 Reflection API를 사용하여 값을 매핑 >> 기본 생성자가 없다면 Reflection은 해당 객체를 생성 할 수 없음) - setter는 사용하지 말아야 함!! >> 1. Entity의 모든 필드에 public setter 메소드를 생성하면 객체의 값의 변경이 개방되어 있기에 일관성을 보장할 수 없음 setter 메소드를 제공하는 것 보단 확실한 비즈니스가 드러나는 메..
JPA - 엔티티 기본 생성자- Entity는 반드시 파라미터가 없는 생성자(기본 생성자)가 있어야 함 (public 또는 protected) - 기본 생성자가 필요한 이유는 스프링 데이터 JPA 에서 엔티티에 동적으로 객체 생성시 JAVA Reflection API를 활용하기 때문 (JPA는 DB 값을 객체 필드에 주입할 때 기본 생성자로 객체를 생성한 후 Reflection API를 사용하여 값을 매핑 >> 기본 생성자가 없다면 Reflection은 해당 객체를 생성 할 수 없음) - setter는 사용하지 말아야 함!! >> 1. Entity의 모든 필드에 public setter 메소드를 생성하면 객체의 값의 변경이 개방되어 있기에 일관성을 보장할 수 없음 setter 메소드를 제공하는 것 보단 확실한 비즈니스가 드러나는 메..
2023.05.15 -
0. - JPA는 다양한 쿼리 방법을 지원 (JPQL / JPA Criteria / QueryDSL / 네이티브SQL / JDBC API 직접 사용 등 ...) 조회 방법1 - EntityManager.find() - 객체 그래프 탐색(a.getB().getC()) - JPA를 사용하면 엔티티 객체를 중심으로 개발함 - 단, 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 - 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 - 어플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL 필요함 - JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 - SQL과 유사한 문법(select, from, where, group by, having, joi..
Orm 표준 jpa 프로그래밍 (6) - 객체 지향 쿼리 언어0. - JPA는 다양한 쿼리 방법을 지원 (JPQL / JPA Criteria / QueryDSL / 네이티브SQL / JDBC API 직접 사용 등 ...) 조회 방법1 - EntityManager.find() - 객체 그래프 탐색(a.getB().getC()) - JPA를 사용하면 엔티티 객체를 중심으로 개발함 - 단, 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 - 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 - 어플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL 필요함 - JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 - SQL과 유사한 문법(select, from, where, group by, having, joi..
2023.05.10 -
0. JPA의 데이터 타입 엔티티 타입 - @Entity로 정의하는 객체 - 데이터가 변해도 식별자로 지속해서 추적 가능 (식별자: DB에서 인스턴스의 집합인 엔티티를 구분할 수 있는 논리적인 값, 하나의 엔티티에 구성되어 있는 여러가지 속성중에 대표할 수 있는 속성) ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 - int, integerm String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 - 기본값 타입: 자바 기본 타입(int, double), 래퍼 클래스(Integer, Long), String - 임베디드 타입 - 컬렉션 ..
Orm 표준 jpa 프로그래밍 (5) - 값 타입0. JPA의 데이터 타입 엔티티 타입 - @Entity로 정의하는 객체 - 데이터가 변해도 식별자로 지속해서 추적 가능 (식별자: DB에서 인스턴스의 집합인 엔티티를 구분할 수 있는 논리적인 값, 하나의 엔티티에 구성되어 있는 여러가지 속성중에 대표할 수 있는 속성) ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 - int, integerm String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 - 기본값 타입: 자바 기본 타입(int, double), 래퍼 클래스(Integer, Long), String - 임베디드 타입 - 컬렉션 ..
2023.05.08