분류 전체보기 954

2. 프로젝트 환경 설정

프로젝트 생성 라이브러리 살펴보기 view 환경설정 DB설치 (h2) JPA, DB 설정, 동작확인 할거다. 먼저 프로젝트 생성 https://start.spring.io/ Spring web thymeleaf Spring data jpa h2 database lombok 이렇게 종속성 가져간다. h2가 개발용이나 연습용이나 이럴 때 좋다고 한다. 가볍고 좀 포켓같은 느낌인 것 같다. 스프링 데이터 JPA는 스프링 데이터와 하이버네이트를 사용한다. 잘 세팅 되었나 main, test 실행 함 해보고 lombok같은 경우 인텔리제이에도 추가로 플러그인을 깔아야 함. 종속성 관계 보려면 gradle 창을 보면됨. 안보일 경우 view - tool window - gradle 뭐 여러가지 자동으로 가져온다. ..

express + mysql

먼저 mysql const db = mysql.createConnection({ host :'localhost', user : 'root', password : '0000', database : 'member', }); db.connect(); db.query('select * from user',(err,row)=>{ if(err) throw err; console.log(row); }) db.end(); 저렇게 createConnection 하면서 객체 형식으로 설정을 해준다. db.connect() 하면은 이제 연결이 된 상태이다. 저 상태로 계속 유지 되는 듯. db.end() 해서 꺼야 꺼지는 듯. 사용할 땐 저렇게 db.query(쿼리, 콜백(에러, data)) 인 듯. express로 app..

1. 스프링 부트 + JPA

스프링 부트는 복잡하고 어려운 스프링 기술을 간결하고 쉽게 사용할 수 있도록 도와주는 기술 JPA는 강력한 JAVA ORM 표준기술 둘이 합치면 높은 생산성으로 빠르게 웹 애플리케이션 개발 가능 Java 진영에서는 이 두 기술로 개발하는 것이 추세 웹 프로젝트 라고 하면 요구사항 분석 설계 아키텍쳐 구성 비즈니스 로직 개발 테스트 웹 계층 개발 거의 이 순으로 따라가면서 한다고 보면 됨. 환경 구성 요구사항 분석 분석을 토대로 도메인 설계 엔티티 설계 테이블 설계 그 후 ORM으로 매핑을 하고, 애플리케이션 아키텍처 구성 그 다음 핵심 비즈니스 로직 개발 테스트 케이스 검증 웹계층 개발 (뷰템플릿, html, 컨트롤러) 완성 유지보수 이게 도메인 주도 설계임

52. JPQL 벌크연산

벌크연산은 update문이나 delete 문을 말함. pk를 딱 한건 찍어서 update나 delete 하는 걸 제외한 모든 update문과 delete문 한번에 모든 데이터를 포괄적으로 update나 delete 하는 것 재고가 10개 미만인 모든 상품의 가격을 10% 인상한다던지 그런 거. 저걸 JPA에서 한다고 하면 재고 10개 미만인거 조회 가격 10% 증가 commit 시점에 DB에 반영 근데 이거를 쿼리 한방으로 제공 근데 이거 그냥 sql도 있는 거 아닌가..? 그냥 딱히 조건 안주고 update 하면 다 그렇게 바뀌잖아. int result1 = em.createQuery("update Member m set m.age = 20") .executeUpdate(); Hibernate: /* ..

JPA/JPA 기본 2023.11.03

join 연습

고객 이름과 고객이 주문한 도서의 판매가격을 검색 select c.name, b.price, b.bookname from customer c join orders o on c.custid = o.custid join book b on o.bookid = b.bookid; 고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬 select c.name, sum(b.price) from customer c join orders o on c.custid = o.custid join book b on o.bookid = b.bookid group by c.custid; 고객의 이름과 고객이 주문한 도서의 이름 구하기 select c.custid, c.name, b.price, b.bookname fro..

DB 2023.11.03

51. Named 쿼리

네임드 쿼리. 미리 이름 정해놓고 쓰는 쿼리. 그러니까 미리 정의해 놓고 이름으로 호출해서 쓰는 함수 같은 거임 어디다 정의해 놓냐면, @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username" ) public class Member { ... 이렇게 엔티티 클래스에다가. 사용할 때는 List result1 = em.createNamedQuery("Member.findByUsername", Member.class) .setParameter("username", "회원1") .getResultList(); 이렇게. 나가는 쿼리는 그냥 저 쿼리 나가는 거임. Hi..

JPA/JPA 기본 2023.11.03

50. 엔티티 직접 사용

JPQL에서 엔티티를 직접사용하면 SQL에서는 그 엔티티의 기본 키값을 사용. 엔티티 직접 사용한다는 게 select count(m) from Member m 저렇게 m을 직접 사용한다는 거. 근데 저런 식으로 하면, select count(m.id) as cnt from Member m 저렇게 id로 나간다. 즉, function등에 엔티티를 직접 사용하면 id를 사용한다. select count(m.id) from Member m 이것도 같은 sql이 나감 파라미터 넘길때도 마찬가지 Member member = new Member(); member.setUsername("memberA"); em.persist(member); List result1 = em.createQuery("select m fr..

JPA/JPA 기본 2023.11.03