본문 바로가기

전체 글

(730)
[Java] Java 장단점 Java의 장점 - 플랫폼에 독립적임 - os에 의존하지 않고, 별도의 멀티 쓰레드 프로그래밍이 가능함 - 객체지향언어로, 캡슐화,추상화, 다형성,클래스 계층 구조가 존재함 단점 - 예외처리를 직접 해주어야함, 그렇지 않으면 컴파일 자체가 실행되지 않는다. - 컴파일 단계에서 속도가 느리다.(JVM을 통해 기계어로 번역되는 과정을 거침, 자바 바이트 코드(자바 컴파일러) -> 기계어(실행엔진))
[Java] OOP(객체 지향 프로그래밍) 관련 공부 OOP란 객체의 관점에서 프로그래밍하는 것을 의미한다. 프로그래밍에서 필요한 데이터를 추상화시켜, 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 중 하나이다. 장점 -코드 재사용이 용이 -유지보수가 쉽다. -대형 프로젝트에 적합하다. 단점 -처리 속도가 상대적으로 느리다. -객체가 많으면 용량이 커질 수 있다. -설계시 많은 노력과 시간이 필요하다. 클래스 - 상태,행위,속성,변수 등을 정의한 것으로, 인스턴스가 생성의 설계가 되는 정보이다. 인스턴스 - 클래스를 바탕으로 생성되어 실제 메모리에 할당되어 사용되는 데이터이다. 특징 1.추상화 어떤 영역에서 필요로 하는 속성이나 행동을 추출하는 작업 구체적인 사물들의 공통적인 특성을 파악해서, 하..
[JPA] Bulk 연산 더티 체킹때문에, 실시간 성은 굉장히 좋은 효과를 가지지만 bulk 성 연산에는 약한것같다. 그래서 기능은 있다고 한다. 쿼리 한번으로 여러 테이블 로우를 변경한다. 벌크 연산 주의 벌크 연산은 영속성 컨텍스트를 무시하고 디비에 직접 쿼리한다. - 벌크 연산을 먼저 실행한다. - 벌크 연산 수행 후 연속성 컨텍스트 초기화 한다. 해당 주의사항을 했던 이유는 많은 량의 데이터가 변경되기 때문에, 영속성 컨턱스트를 통해 값을 받게 되면 해당 애플리케이션과 실제 디비의 갑이 다르게 될수 있기 때문이다. Spring data jpa 에서는 Modifying하는 어노테이션이 있는데, 이건 영속성 컨텍스트를 한번 clear 시켜주는 것이다.
[JPA] Named 쿼리 Named 쿼리는 쿼리에 대한 실제 이름을 붙일수있다. 즉 query id 를 부여할수있다. - 정적 쿼리만 가능 - 어노테이션, XML 에 정의 - 애플리케이션 로딩 시점에 초기화 후 재사용 - 애플리케이션 로딩 시점에 쿼리를 검증 sql로 파싱해서, 캐싱하고있다.
[JPA] 패치조인 SQL 조인 기능이 아니다. JPQL에서 성능 최적화를 위해서 사용된다. 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회하는 기능이다. join fetch 명령어를 사용한다. 이런식으로 join fetch를 하게 되면 내부적으로 inner join이 발생되어서, 해당 쿼리는 한번만으로 조회를 전부 해온다. Lazy fetch type이여도, 프록시 엔티티가아닌, 실제 엔티티 값으로 가져온다. (Team도) 컬렉션 타입을 공부해보자 이런식으로 팀의 member들에 대한 리스트를 가지고있다고 가정해보자 팀은 총 2개인데, 팀을 가진 member가 3인 경우? 총 3개가 노출이된다. 응? 팀을 select 했는데, 왜 3개가 되지 이런경우 사용되는게 바로, distinct이다. Team 하위 멤버가 2개이면..
[JPA] 경로 표현식 상태 필드 : 단순히 값을 저장하기 위한 필드 연관 필드 : 연관관계를 나타내기 위한 필드 -단일값 연관 필드 : many to One이나 one to one 처럼 연관 관계가 엔티티 하나일때 -컬렉션 값 연관 필드 : 엔티티 하위에 컬렉션 으로 가지고있는 데이터 상태 필드 -> 경로 탐색의 끝 , 더이상 탐색하지 않는다 연관 필드 -> member 하위에 team이 있는 경우, team을 select하면, 묵시적인 inner join이 발생한다.  team 하위의 값을 탐색하고 싶으면 m.team.teamName 이런식으로 작성하면되고, 이런식으로 select하면 join이 발생하는 것을 묵시적 내부 조인이라고 표현한다 컬렉션 연관관계 경로도, 묵시적 내부조인이 발생하지만, 하위 내용을 조회할수는없다..
[jpa] 페이징 & 조인 & 쿼리 간략 jpa는 해당 두개로 페이징을 추상화 했다. 이렇게 하면, 1번째 부터 3개까지, 총 3개를 반환한다. 정말 쉽게 페이징 기능이 구현된다. 개꾸르 추가로 inner join 이나 조인등은 이렇게 사용한다. 자동으로 pk에 대한 ==이 적용된다고 생각하면 된다. 외부 조인도 가능하고, 연관관계가 없는 엔티티 끼리도 외부조인까지 가능하다 하이버네이트 5.1부터는 연관관계가 없는 엔티티끼리도 외부조인이 가능하다 내부조인만 원래는 가능했다고 한다 from 절의 서브쿼리는 JPQL에서 불가능하다고 한다. -> join으로 앵간하면 풀어서 해결한다. 아니면 native SQL로 해결한다. case 문이나, 기타 쿼리도 동일하다. 오라클의 nvl 과 값이 같으면 Null을 반환해주는 펑션들도있으니 유용하게 사용하면 ..
[JPQL] JPQL 시작하기 JPQL : java persistance query language JPQL은 엔티티 객체를 대상으로 쿼리한다. JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. JPQL의 특징 -엔티티와 속성은 대소문자를 구분한다. -JPQL 키워드는 대소문자를 구분하지 않는다. -엔티티 이름을 사용하고, 테이블 이름을 사용하지 않는다. -별칭을 필수이다. TypeQuery, Query TypeQuery -> 반환타입이 정확할때 Query -> 반환타입이 부정확할때 query.getResultList() -> 결과가 하나이상일때, 리스트 반환 -> 결과가 없으면 빈 리스트 반환 query.getSingleResult() -> 결과가 정확하게 하나 여야한다. 둘이상이거나, 0이면, Except..