FrameWork/ORM
-
Sequelize - 실전활용(Update,Delete,Relation설정)FrameWork/ORM 2024. 4. 24. 11:23
Sequelize 실전활용Update - catch~then 체인과 pk를 이용exports.postEditProduct = (req, res, next) => { const prodId = req.body.productId; const updatedTitle = req.body.title; const updatedPrice = req.body.price; const updatedImageUrl = req.body.imageUrl; const updatedDesc = req.body.description; Product.findByPk(prodId) .then( product =>{ product.title = updatedTitle; product.price ..
-
Prisma - Transactions과 다양한 부가기능FrameWork/ORM 2024. 4. 17. 10:35
Prisma에서 트랜잭션과 다양한 부가기능 Prisma - Doc/PrismaClient/Queries https://www.prisma.io/docs/orm/prisma-client/queries/transactions Transactions and batch queries (Reference) | Prisma Documentation This page explains the transactions API of Prisma Client. www.prisma.io 트랜잭션은 결과적으로 성공 또는 작동하지 않음이 보장되는 읽기/쓰기 작업이다. 트랜잭션이 상자속에 이루어진다고 상상해보자 격리된 상자속에서 SQL 문을 실행하는 것과 같다. 따라서 트랜잭션은 모든 명령문이 성공적으로 실행되거나 실행될 것임을 보..
-
Prisma - 객체 간의 관계 설정, 1:N, 1:1, N:MFrameWork/ORM 2024. 4. 16. 10:33
Prisma 객체간의 관계 설정 이번 게시물에서는 DB에서 자주 사용되고 블로그를 통해 많이 소개되었던 1대다(1:N), 1대1(1:1), 다대다(N:M) 관계들을 Prisma는 어떤 인터페이스를 사용해서 이를 설정할 수 있도록 하는지 알아볼것이다. 1 : N (One to Many Relations) 이 관계의 경우는 테이블 A의 하나의 레코드는 테이블 B의 여러 레코드와 관련되어 있다. 다만 테이블 B는 하나의 A의 레코드하고만 연결된다. 위 그림에서 와 같이 사용자는 여러번 주문을 할수 있다. 하지만 주문은 주문자로써의 사용자정보를 하나만 가진다. 1 : 1 (One to One Relations) 한명의 사용자는 하나의 프로필만 가지게 되고 프로필 입장에서도 하나의 사용자만 가지게 된다. N : ..
-
Prisma - 🐠시작하기 환경설정, 쿼리 로깅, CRUDFrameWork/ORM 2024. 4. 12. 10:52
Prisma 설정하기 [Quickstart] https://www.prisma.io/docs/getting-started/quickstart Quickstart with TypeScript & SQLite | Prisma Documentation Get started with Prisma ORM in 5 minutes. You will learn how to send queries to a SQLite database in a plain TypeScript script using Prisma Client. www.prisma.io nodeJs-express 서버에서 prisma 사용하기 prisma 의존성 설치 yarn add prisma --dev prisma init npx prisma init 이후..
-
Sequelize - 시퀄라이즈 시작 (설정,모델만들기,관계설정)FrameWork/ORM 2024. 3. 21. 15:52
Sequelize(시퀄라이즈) 시작 MySQL 테이블 생성 CREATE TABLE[데이터베이스명.테이블명]으로 테이블 생성 댓글 정보를 생성하는 테이블 create table comments( id int not null auto_increment, commenter int(11) not null, comment varchar(100) not null, created_at datetime not null default now(), primary key (id), INDEX commenter_idx (commenter ASC), CONSTRAINT commenter foreign key (commenter) references users(id) ON DELETE CASCADE ON UPDATE CASCAD..
-
ORM - 영속성 관리(플러시, 준영속)FrameWork/ORM 2024. 2. 29. 14:38
플러시 플러시(flush())는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영한다. 플러시를 실행하면 구체적으로 다음과 같은 일이 일어난다. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다.(등록,수정,삭제,쿼리) 영속성 컨텍스트를 플러시하는 방법은 3가지 em.flush()를 직접 호출한다. 트랜잭션 커밋 시 플러시가 자동 호출된다. JPQL쿼리 실행 시 플러시가 자동 호출된다. ▼직접호출 엔티티 매니저의 flush() 메소드를 직접 호출해서 영속성 컨텍스트를 강제로 플러시한다. 테스트나 다른 프레임워크와 JPA를 함께..
-
ORM - 영속성 관리(엔티티 등록,수정,삭제)FrameWork/ORM 2024. 2. 29. 10:58
엔티티 등록,수정,삭제 엔티티 등록 엔티티 매니저를 사용해서 엔티티를 영속성 컨텍스트에 등로해보자. @Transactional public void enrollEntity(EntityManager em){ Member memberA= new Member(); memberA.setId("member1"); memberA.setUsername("test1"); memberA.setAge(20); Member memberB= new Member(); memberB.setId("member2"); memberB.setUsername("test1"); memberB.setAge(30); em.persist(memberA); em.persist(memberB); //여기까지 INSERT SQL을 데이터베이스에 보내..
-
ORM - 영속성관리(엔티티 매니저 팩토리와 엔티티 매니저)FrameWork/ORM 2024. 2. 28. 14:55
엔티티 매니저 팩토리와 엔티티 매니저 JPA가 제공하는 기능을 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다. 매핑한 엔티티를 엔티티 매니저(EntityMnager)를 통해 어떻게 사용하는지 알아보자 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 이름 그대로엔티티를 관리하는 관리자다. 개발자 입장에서는 엔티티 매니저를 엔티티를 저장하는가상의 데이터베이스로생각하면 된다. 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. 엔티티 매니저 팩토리는 이름 그대로 에티티 매니저를 만드는 공장인데, 공장을 만드는 비용은 상당히 크다. 따라서 한..