분류 전체보기 55

React - Component 와 props

리액트는 컴포넌트 기반(Conponent-Based)이다. 리액트에서는 모든 페이지가 컴포넌트로 구성되어있고, 하나의 컴포넌트는 또 다른 여러 컴포넌트의 조합으로 구성될 수 있다. 그리고 이런 컴포넌트들을 마치 레고블록 조립하듯 끼워맞춰서 새로운 컴포넌트를 만들 수 있는것이다. 리액트 컴포넌트에서의 입력은 props고, 출력은 React Element가 된다. 결국 리액트 컴포넌트가 하는 역할은 어떠한 속성들을 입력으로 받아서 그에 맞는 리액트 Element를 생성하여 리턴해주는 것이다. Props 란?Property의 줄임말이다. 리액트 Component의 속성이고, 컴포넌트에 전달한 다양한 정보를 담고 있는 자바스크립트 객체이다.props의 특성1. Read-Only (읽기 전용) 이다. -> 값을 ..

React 2024.04.28

리액트의 Element

리액트 공식 홈페이지에서는 Element를 다음과같이 정의하고있다.Elements are the smallest building blocks of React apps.Element는 리액트 앱의 가장 작은 블록들이라는 것이다.리액트 Elements는 자바스크립트 객체 형태로 존재한다. 아래 코드는 버튼을 나타내기 위한 Element 코드이다.{ type: 'button' props: { className: 'bg-green', children: { type: 'b', props: { children: 'Hello, element!' } } }}위의 코드가 실제로 렌더링될 때 DOM..

React 2024.04.28

JSX 란?

JSXJavaScript + XML/HTML 이 결합된 구조이다. JSX 코드 예시const element = Hello, world!; JSX의 역할내부적으로 XML/HTML 코드를 JavaScript로 변환한다. → JSX코드로 작성해도 결과적으로는 JavaScript 코드가 나오게 된다.JSX → JavaScript로 변환하는 함수가 바로 React.createElement 함수이다!React.createElement( type, [props], [...children]) JSX를 사용한 코드class Hello extends React.Component { render() { return Hello {this.props.toWhat}; }}ReactDOM.render..

React 2024.04.28

React 소개와 간단한 연동

React 자바스크립트 UI 라이브러리 React는 Vue와 달리 프레임워크가 아닌 라이브러리이다. 프레임워크와 라이브러리의 차이점은 흐름 제어의 권한에 있다. 프레임워크는 제어의 권한이 프레임워크 자신에게 있는데에 반해, 라이브러리는 제어권한이 개발자에게 있다. 리액트의 장점 1. 빠른 업데이트와 렌더링 속도(화면에 나타나는 내용이 바뀌는 것) -> virtual dom을 사용한다. 2. 컴포넌트 기반 구조(레고 블록을 조립하듯 컴포넌트들을 모아서 개발한다. 이로 인해 재사용성이 높아지고 개발기간이 단축된다.) 3. 유지보수 용이(해당 모듈만 수정하면 된다.) 4. 활발한 지식공유 & 커뮤니티 리액트의 단점 1. 방대한 학습량 2. 복잡한 상태관리(props, state...) 간단한 리액트 적용 실습..

React 2024.04.23

JPQL - CASE 식

특정 조건에 따라 분기할 때 CASE 식을 사용한다. CASE 식은 4가지 종류가 있다. 기본 CASE 심플 CASE COALESCE NULLIF ▼ 기본 CASE CASE {WHEN THEN }+ ELSE select case when m.age = 60 then '경로요금' else '일반요금' end from Member m ▼ 심플 CASE 심플 CASE는 조건식을 사용할 수 없지만 문법이 단순하다. 자바의 switch case문과 비슷하다. CASE {WHEN THEN }+ ELSE END select case t.name when '팀A' then '인센티브110%' when '팀B' then '인센티브120%' else '인센티브105%' end from Team t ▼ COALESCE CO..

JPA 2024.03.25

모든 게 무너지고 있어 : Everything is falling apart

안녕하세요! 오늘 배운 표현은 "모든것이 무너지고있어.." 라는 표현입니당! 바로 예문을 보시죠! Everything is falling apart. 모든게 다 무너지고 있어. She's falling apart. 그녀는 무너지고 있어. Things are falling apart. 엉망진창이네요. The aging bridge fell apart, but thankfully no one was hurt. 그 노후한 다리가 무너졌지만 다행히 아무도 다치지 않았어. Once the group break up, their careers will also fall apart. 그 그룹이 해체하면 그들의 커리어도 무너질 거야. Their business fell apart because they didn't h..

카테고리 없음 2024.03.13

JPQL - 서브 쿼리

JPQL도 SQL 처럼 서브 쿼리를 지원한다. 여기에는 몇가지 제약이 있는데, 서브쿼리를 WHERE, HAVING 절에서만 사용할 수 있고, SELECT, FROM 절에서는 사용할 수 없다. 다음은 나이가 평균보다 많은 회원을 찾는다. select m from Member m where m.age > (select avg(m2.age) from Member m2) 다음은 한 건이라도 주문한 고객을 찾는다. select m from Member m where (select count(o) from Order o where m = o.member) > 0 # 참고로 이 쿼리는 다음처럼 컬렉션 값 연관 필드의 size 기능을 사용해도 같은 결과를 얻을 수 있다. select m from Member m whe..

JPA 2023.10.23

JPQL - 경로 표현식

경로 표현식이라는 것은 .(점)을 찍어 객체 그래프를 탐색하는 것이다. select m.username from Member m join m.team t join m.orders o where t.name = '팀A' 위의 JPQL에서 m.username, m.team, m.orders, t.name이 모두 경로 표현식을 사용한 예다. 경로 표현식의 용어 정리 상태 필드: 단순히 값을 저장하기 위한 필드(필드 or 프로퍼티) 연관 필드: 연관관계를 위한 필드, 임베디드 타입 포함(필드 or 프로퍼티) - 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티 - 컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션 @Entity public class M..

JPA 2023.10.23

JPQL - 페치 조인(Fetch Join)

페치 조인은 SQL에서 이야기하는 조인의 종류는 아니고 JPQL에서 성능 최적화를 위해 제공하는 기능이다. 이것은 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능인데 join fetch 명령어로 사용할 수 있다. 엔티티 패치 조인 패치 조인을 사용해서 회원 엔티티를 조회하면서 연관된 팀 엔티티도 함께 조회하는 JPQL을 보자. select m from Member m join fetch m.team 예제를 보면 join 다음에 fetch라 되어있는데, 이렇게 하면 연관된 엔티티나 컬렉션을 함께 조회하는데 여기서는 회원(m)과 팀(m.team)을 함께 조회한다. 참고로 일반적인 JPQL 조인과는 다르게 m.team 다음에 별칭이 없는데 페치 조인은 별칭을 사용할 수 없다. 실행된 SQL은 다음과 같다..

JPA 2023.10.12

JPQL 조인

내부 조인 내부조인은 INNER JOIN을 사용하고, INNER는 생략할 수 있다. String teamName = "팀A"; String query = "SELECT m FROM Member m INNER JOIN m.team t " +"WHERE t.name = :teamName"; List members = em.createQuery(query, Member.class) .setParameter("teamName", teamName) .getResultList(); 회원과 팀을 내부 조인해서 '팀A'에 소속된 회원을 조회한다. 외부 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 다음과 같이 사용하고, OUTER는 생략 가능하다. 컬렉션 조인 일대다 관..

JPA 2023.10.10