전체 글336 5)실전 예제, 단방향 연관관계 매핑, 양방향 연관관계,연관관계의 주인 실전 예제 - 1. 요구사항 분석과 기본 매핑 요구사항 분석• 회원은 상품을 주문할 수 있다. • 주문 시 여러 종류의 상품을 선택할 수 있다. 도메인 모델 분석 회원과 주문의 관계: 회원은 여러 번 주문할 수 있다. (일대다) 주문과 상품의 관계: 주문할 때 여러 상품을 선택할 수 있다.반대로 같은 상품도 여러 번 주문될 수 있다. 주문상품 이라는 모델을 만들어서 다대다 관계를 일다대, 다대일 관계로 풀어냄 테이블 설계 엔티티 설계와 매핑생성된 클래스@Getter@Setter@Entitypublic class Item { @Id @GeneratedValue @Column(name = "ITEM_ID") // 테이블상 컬럼명이 ITEM_ID 이므로 매핑해준다. private L.. 인프런/자바 ORM 표준 JPA 프로그래밍 - 기본편 2024. 5. 22. 4) 엔티티 매핑,데이터베이스 스키마 자동생성 엔티티 매핑• 객체와 테이블 매핑: @Entity, @Table• 필드와 컬럼 매핑: @Column• 기본 키 매핑: @Id• 연관관계 매핑: @ManyToOne , @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.• JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의• 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자) • final 클래스, enum, interface, inner 클래스 사용X • 저장할 필드에 final 사용 X @Entity 속성 정리 속성: name • JPA에서 사용할 엔티티 이름을 지정한다. • 기본값: 클래스 이름을 그대로 사용(예: Member) • 같은 클래스 이.. 인프런/자바 ORM 표준 JPA 프로그래밍 - 기본편 2024. 5. 22. 3) jpa 구조, 영속성 컨텍스트,영속,준영속,쓰기지연 jpa구조 JPA에서 가장 중요한 2가지 1. 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping)2. 영속성 컨텍스트 고객의 요청이 올때마다 EntityManager를 생성한다.EntityManager는 내부적으로 data connection을 사용해서 db를 사용하게 된다. 영속성 컨텍스트 • JPA를 이해하는데 가장 중요한 용어• “엔티티를 영구 저장하는 환경”이라는 뜻[컨텍스트는 문맥, 환경 이런뜻을 가진다.]• EntityManager.persist(entity);[db에 저장한다기보다는 영속성 컨텍스트라는곳에 저장한다는것이다.] 엔티티 매니저? 영속성 컨텍스트? • 영속성 컨텍스트는 논리적인 개념• 눈에 보이지 않는다.• 엔티티 매니저를 통해서 영.. 인프런/자바 ORM 표준 JPA 프로그래밍 - 기본편 2024. 5. 20. 2) 프로젝트설정,jpa 기초 maven pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 persistence.xml persistence가 persistence.xml을 읽어서 entitymanagerFactory라는 클래스를 생성한다.그다음 필요할때마다 .. 인프런/자바 ORM 표준 JPA 프로그래밍 - 기본편 2024. 5. 20. 트리거 Trigger 트리거 Trigger 트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생하 때마다 자동적으로 수행되는 사용자 정의 프로시저이다. 트리거는 TABLE과는 별도로 DATABASE에 저장된다. 트리거는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있다. 트리거는 SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현하고, 관련 테이블의 데이터를 일치시킬 때 주로 사용된다. 제약조건과 함께 데이터 무결성을 지키는 하나의 방법으로써 특정 이벤트에 대해서 연속적으로 자동 동작하는 특수한 형태의 저장 프로시저라고 볼 수 있다. 일반적으로 사용처는 많지만 예를 들어보자면 "입고"테이블에 새로운 제품이 들어왔을 때 그 수량을 "재고"테이블에 자동으로 반영되게 하는.. 데이터베이스/Oracle 2024. 4. 9. Sequence 시퀀스 오라클에서는 자동 증가 컬럼을 사용할 수가 없다. 다른 DB에서는 컬럼 자체에 옵션이 있으나, 오라클에서는 컬럼의 값을 증가시키기 위해서는 MAX(컬럼) + 1 또는 시퀀스를 사용하여 일련번호를 부여해야 한다. 시퀀스 사용전 방법 1. count를 이용하는 방법 -> 에러발생 insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'1번글'); insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'2번글'); insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'3번글'); .. 데이터베이스/Oracle 2024. 4. 4. view (뷰) 뷰(View) 뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. 뷰는 실제로 데이터를 저장하고 있지는 않지만 DML 작업이 가능한 가상의 테이블이라고 생각하면 된다. 뷰(View)의 사용 목적 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view.. 데이터베이스/Oracle 2024. 4. 4. 클래스,생성자 클래스, 생성자 class Person { constructor(name, age) { // 생성자 메소드 이름은 자바와 다르게 constructor 이다. this.name = name; // 필드는 명시적으로 선언하지않고 생성자에서 초기화된다. this.age = age; // 이렇게해도 사용할 수 있음. } speak() { // 함수도 포함가능 console.log(`${this.name} : hello `); } get age() { // 자바스크립트에서 게터(getter) //age의 getter를 정의하는 순간 this.age를 쓰는곳에서는 이 getter를 호출하게된다. return this.age; } set age(value) { // 자바스크립트에서 세터(setter) //age의 s.. 자바스크립트 2024. 4. 3. 가상컬럼 가상 컬럼 하나의 테이블에 존재하는 다른 컬럼들을 이용하여 새로운 값을 만들어 내는 것 ( Virtual Column은 테이블에있는 하나 이상의 컬럼값을 기반으로 계산식을 적용할 수 있는 기능이다.) 컬럼명 타입 GENERATED ALWAYS AS 표현식 VIRTUAL create table vtable ( no1 number, no2 number, no3 number GENERATED ALWAYS as (no1+no2) virtual ) insert into vtable(no1, no2) values (100, 200); 가상열에는 insert를 할 수 없다. ( 오류발생함) select * from vtable; 데이터를 업데이트 해도 update vtable set no1 = 300 where no.. 데이터베이스/Oracle 2024. 4. 3. oracle 테이블 복사 및 구조 복사 , PL-SQL(반복문) PL-SQL (반복문) Begin for i in 1..100 loop insert into temp2(id) values ('A' || to_char(i)); end loop; end; 테이블 구조 및 데이터 복사하기 CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 [WHERE] /* 새로운 테이블을 생성하고 원하는 테이블 구조(복제): 스키마 + 데이터 삽입 단점 : 제약은 복제가 안된다 ( pk, fk) 순수한 데이터 구조 + 데이터가 복사된다. */ create table copyemp as select * from emp; select * from copyemp; 테이블이 존재할경우 데이터만 복사하기 테이블이 존재할경우, 데이터만 복사하기(구조가 같은경우) INS.. 데이터베이스/Oracle 2024. 4. 3. 변수,<script>(async vs defer), 'use strict' , 템플릿 리터럴, (==,===), function 변수 자바스크립트는 C나 Java외는 다르게 변수를 선언할 때 데이터 타입을 미리 지정하지 않는다. 다시 말해, 변수에 할당된 값의 타입에 의해 동적으로 변수의 타입이 결정된다. 이를 동적 타이핑이라 하며 자바스크립트가 다른 프로그래밍 언어와 구별되는 특징 중 하나이다. // Number let num1 = 1001; let num2 = 10.50; // String let string1 = 'Hello'; let string2 = "World"; // Boolean let bool = true; // null let foo = null; // undefined let bar; // Object let obj = { name: 'Lee', gender: 'male' }; // Array let array.. 자바스크립트 2024. 4. 2. 서브쿼리 (subQuery) [스칼라,인라인 뷰,중첩] // all any some 연산자 서브 쿼리는 메인 쿼리 내부에 작성하는 쿼리를 뜻하며, 주로 아래의 3가지 서브 쿼리로 분류한다. 스칼라 서브 쿼리 SELECT 절에 위치하며 칼럼의 역할을 하므로 해당 서브쿼리의 결과는 반드시 단일 행 or 단일 값으로 리턴되어야 한다. *다중 행 값이 조회되면 "ORA-01427: single-row subquery returns more than one row" 라는 오류가 발생하므로 주의 만약을 대비해서 서브 쿼리 마지막에 AND ROWNUM = 1을 붙이기도 함 [한개만 반환되게] select e.EMPNO, e.ENAME, e.DEPTNO, (select d.DNAME from dept d where d.DEPTNO = e.DEPTNO) as dname from emp e where e.sal.. 데이터베이스/Oracle 2024. 4. 2. 이전 1 ··· 4 5 6 7 8 9 10 ··· 28 다음