본문 바로가기
반응형

학습/DB46

JPA 값 타입 1. 엔티티 타입(@Entity) 데이터가 변해도 식별자로 지속해서 추적 가능하다. 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능하다. 2. 값타임 데이터가 변하면 식별자가 없고 값만 있으므로 변경시 추적 불가하다. 예) 숫자 00을 200으로 변경하면 완전히 다른 값으로 대체된다. 단, 추적이 불가능하다. 생명주기를 엔티티에 의존한다. 회원을 삭제하면 이름, 나이 필드도 함께 삭제된다. 값타입은 공유하면 안된다. 회원 이름 변경시, 다른 회원의 이름도 함께 변경되면 안되기 때문에 주의한다. int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체이다. 기본타입은 변경 시, 값을 복사해서 괜찮지만, 참조로 공유하는 래퍼 클래스나, 다른 객체들은 값을 변경.. 2021. 9. 18.
객체지향 쿼리 언어 JPA에서 쿼리하는 다양한 방법들을 살펴본다. -JPQL -JPA Criteria -QueryDSL -네이티브 SQL -JDBC API 직접 사용 -MyBatis -SpringJdbcTemplate 사용 JPQL - 가장 단순한 조회 방법이다. EntityManger.find() 객체 그래프 탐색(a.getB().getC()) 나이가 18살 이상인 회원을 모두 검색하고 싶다면? select m from Member as m where m.age > 18 JPA를 사용하면 엔티티 객체를 중심으로 개발한다. 검색을 할 때 테이블이 아닌 엔티티 객체를 대상으로 검색한다. 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능하다. 결국 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요.. 2021. 9. 17.
Oracle DML GRANT, REVOKE 사용하기 현재 회사에서 같은 DB를 사용하지만, 스키마를 분리하여 사용하는 구조이다. 가끔 서로 시스템을 연결해야 하는 경우가 있어 다른 스키마의 테이블을 사용해야 한다. 만약에 제대로 권한을 가지지 못하면 테이블을 찾을 수 없다는 오류가 뜬다. 따라서, 해당 오류와 관련하여 검색한 후, 바로 권한을 부여하였고 해당 개념을 정리한다. GRANT, REVOKE 종류 종류 설명 SELECT SELECT를 할 수 있는 권한(조회) UPDATE UPDATE를 할 수 있는 권한(수정) DELETE DELETE를 할 수 있는 권한(삭제) REFERENCES REFERENCES를 할 수 있는 권한(참조) ALTER ALTER를 할 수 있는 권한(변경) INDEX INDEX를 할 수 있는 권한(인덱스) ALL 모든 권한 특정 .. 2021. 9. 1.
Query Method Spring에서 사용하는 JpaRepository, CrudRepository 등에는 기본적인 CRUD 관련 메서드가 기본적으로 정의되어 있다. 예를 들어, 조회(검색)의 경우 findById()라는 메서드가 있는데, 내가 엔티티를 조회할 때 Id 뿐만 아니라 다른 것을 이용하고 싶다면 어떻게 할 수 있을까? 해당 메서드를 직접 정의하고 "구현"하지 않더라도, Spring Data JPA 규칙에 맞게 메서드 이름을 정의한다면 내부적으로 이름에 맞게 검색을 해준다. 다음은 Spring Data JPA 공식문서에서 제공하는 네이밍 방법이다. public interface UserRepository extends JpaRepository { User findFirst1ByName(String name); Li.. 2021. 8. 29.
Spring Data Repository Interface Spring Data는 Spring 프로젝트 중 데이터 접근에 관련된 프로젝트이다. 기본적인 데이터 저장소의 특성을 유지하면서 데이터 접근을 위해 친숙하고 일관된 스프링 기반 프로그래밍 모델을 제공하는 것이 목표이다. 대표적으로 Spring Data Commons, Spring Data JPA가 있으며 해당 내용을 알아보도록 한다. Repository 데이터베이스 마커 인터페이스로, 타입과 id의 타입을 설정한다. ( 마커 인터페이스 ) CrudRepository CRUD 메서드를 제공한다. 생성, 읽기, 삭제 메서드가 제공된다. S save(S entity); Iterable saveAll(Iterable entities); Optional findById(ID id); boolean existsByI.. 2021. 8. 29.
SQL select 쿼리 문법 순서 1. FROM 2. ON 3. JOIN 4. WHERE 5. GROUP BY 6. CUBE | ROLLUP 7. HAVING 8. SELECT 9. DISTINCT 10. ORDER BY 11. TOP - FROM GROUP BY HAVING SELECT - FROM ON JOIN WHERE SELECT DISTINCT ORDER BY - SELECT, ORDER BY는 나중에 실행된다 - JOIN을 사용했을 때 FROM ON JOIN WHERE 순서로 실행한다. 출처 : https://bicloud.tistory.com/20 2021. 8. 28.
CDATA란? CDATA란? CDATA는 Character Data(문자 데이터)의 약자로, 마크업 언어(XML)에서 데이터를 표시하기 위한 것입니다. 특수문자들을 태그가 아니라 데이터로 명시하고 싶을 때 사용합니다. 보통 XML 파일에서 쿼리 짤 때 많이 사용합니다. 이미 정의된 &lt, &gt, &amp 등을 사용할 수도 있지만 가독성을 너무나 해치기 때문에 CDATA를 이용하는 것이 가독성에도 훨씬 좋습니다. 사용법 1. CDATA 영역은 다음 순서로 시작합니다. 예시 CDATA 사이에 포함된 모든 문자는 문자 그대로 해석됩니다 만약 아래와 같은 문자열을 나타내고 싶다면? 중요점 : , / 와 같은 문자 데이터를 별도로 처리해야 합니다. //출력.. 2021. 8. 27.
oracle ROWNUM & ROW_NUMBER 페이징을 구현할 때, ORACLE을 사용하면 ROWNUM을 사용한다. 어떤 방식으로 문서에 소개하고 있는지 궁금했고 나아가 관련 함수인 ROW_NUMBER도 궁금하여 같이 조사하게 되었다. ROWNUM이란? ROWNUM을 사용하면, 각각의 row에 순서대로 값을 부여한 새로운 칼럼이 생성된다. ( 1, 2, 3 ... ) 또한, 쿼리로 리턴된 row의 갯수를 제한할 때도 사용이 가능하다. SELECT * FROM employees WHERE ROWNUM < 11; 만약에 ORDER BY를 서브쿼리에 사용하고 탑 레벨에 ROWNUM을 사용하면, ROW가 정렬된 이후에 ROWNUM 조건을 추가할 수 있다. 예를 들어, 다음 쿼리는 employee_id의 가장 작은 10개의 숫자를 리턴한다. 이것을 top-N.. 2021. 8. 27.
JOIN vs WHERE 차이점 회사에서 로그 정보를 약 4개의 테이블이 where조건으로 서로 연관되어 조회하고 있었습니다. 기존에는 회원들의 id를 where 조건에 걸어두면 되었지만, 새로운 기능은 비로그인 회원들의 개인정보 열람 기록도 로그에 포함하는 것이었습니다. 안타깝게도 비로그인을 하면 회원 id가 없기 때문에 해당 정보를 where에서 조건을 걸어줄 방법이 없었습니다. 따라서 where절을 모두 join으로 변경했습니다. 많은 테이블의 where조건을 join으로 변경하며 join의 매력에 대해 알아보겠습니다. 성능 이슈는 다루지 않습니다. *where where에서만 조건을 건다는 것은, from table1, table2, table3처럼 from에 테이블 정보가 모두 들어간다는 것이니다. 가장 먼저 where는 생각.. 2021. 5. 12.
반응형