CS 64

[HTTP] 인터넷 네트워크

IP(인터넷 프로토콜) 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 출발지 ip 목적지 ip 전송 데이터 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 중간에 패킷이 사라지면 어떻게 될 것인가? 패킷이 순서대로 오지 않으면 어떻게 될 것인가? 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이면 어떻게 구분할 것인가? 위의 문제로 인해 TCP UDP 가 존재합니다 TCP, UDP TCP의 특징 연결지향 - TCP 3 way handshake(가상연결) 데이터 전달 보증(데이터 전송이 잘 되었다고 응답이 옵니다.) 순서 보장(순서가 다를 시 순서가 다른것..

CS 2021.12.13

[JPA] 필드와 컬림매핑

매핑 어노테이션 @Column : 컬럼 매핑 ```@Temporal`` : 날짜 타입 매핑 @Enumerated : Enum 타입 매핑 @Lob : BLOB, CLOB 매핑 @Transient : 특정 필드를 컬럼에 매핑하지 않을 시(매핑 무시) @Enumerated 사용 시 주의할 점 EnumType.ORDINAL: enum 순서를 데이터베이스에 저장 EnumType.STRING: enum 이름을 데이터베이스에 저장 Enum의 기본 설정은 EnumType.ORDINAL 입니다. 위의 설명처럼 ORDINAL은 DB에 순서만 저장되기 때문에 만약 enum에 다른 값을 추가할 경우 ORDINAL의 번호가 변경될 수 있습니다. 따라서 enumType을 ORDINAL이 아닌 STRING으로 설정하여 사용하시면 ..

CS 2021.12.10

[JPA] 엔티티매핑

엔티티매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하는 Entity라 지칭합니다. JPA를 사용하여 테이블과 매핑할 클래스는 @Entity가 필수적으로 붙습니다. 기본생성자 필수 적으로 생성되어야 합니다. final, enum, interface, inner 클래스는 @Entity가 적용되지 않습니다. Table name catalog schema uniqueConstrains(DDL) ... @Entity // @Entity 사용방법 @Table(name = "USER") // @Table(name) 사용방법 public..

CS 2021.12.09

[JPA] 준영속 상태

준영속 상태 EntityManager(영속성 컨텍스트)에 올려져 있는 객체를 내리는 것 더이상 JPA가 관리하지 않겠다는 뜻입니다. Method EntityManager.detach() EntityManager.clear() EntityManager.close() Code EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { User user = em.find(User.class, 1L); user.setName("AAAA"); em..

CS 2021.12.08

[jpa] 영속성컨텍스트1

JPA의 개념에 대해 익숙지 않아 인강을 들으면서 정리를 진행하고 있습니다. 하지만 낯선 개념들이 많아 개인적으로 정리하고 이해하려고 하지만 잘못 이해하고 정리한 부분들이 존재할 수 있다고 생각됩니다. 만약 잘못된 부분이 있다면 언제든지 댓글 남겨 주시면 바로 반영하도록 하겠습니다. Words 영속성: "entity"를 연구저장하는 환경 EntityManager.persist(entity) 앞에 이야기한 persist는 사실 db에 insert를 직접 시키는 쿼리문이 아니라고 합니다. persist를 통해 특정한 중간 공간에 저장하고 commit 시에 실제 insert가 이루어 집니다. 준영속, 삭제 // 회원 엔터티를 영속성 컨텍스트에서 분리, 준영속 상태 em.detach(user); // 객체를 삭..

CS 2021.12.07

# [JPA] JPQL의 기본적 정의와 간단한 사용법

앞서 한 내용에서는 기본적인 crud에 대해 알게 되었습니다 하지만 JPA를 사용하여 조건을 붙여 사용할 경우 어떻게 진행할까요? 이때 JPA에서 제공하는 언어가 JPQL입니다. JPQL이란? SQL을 추상화한 객체 지향 쿼리 언어로 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리 입니다. 왜? JPA 를 사용하면 엔터티 객체를 중심으로 개발을 합니다. 이때 검색 쿼리가 문제가 됩니다. 모든 데이터를 객체로 변환해서 검색하는 것은 불가능하기 때문입니다. 따라서 application이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요합니다. 특징 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않습니다. JPQL을 한마디로 정의하면 객체 지향 SQL 입니다. SQL과..

CS 2021.11.30

[JPA] jpa 기본 및 간단하게 사용해보기

JPA 기초와 매핑 @Entity : JPA가 관리할 객체라는것을 알려줍니다(class 위에 선언) @Id : DB PK와 매핑 할 필드를 지칭합니다(field 위에 선언) EntityManager EntityManagerFactory: application 로딩 시점에 딱 하나만 존재해야합니다. EntityManger: transaction 마다 생성해 주어야 합니다. persistence.xml hibernate option 설정 은 아래와 같이 sql을 보여주게 하는 설정입니다. Hibernate: /* insert hellojpa.User */ insert into User (name, id) values (?, ?) 은 가독성을 위해 들여쓰기 및 줄바꿈 등을 해서 보여주게 하는 옵션입니다. 은 ..

CS 2021.11.26

[JPA] jpa 프로젝트 생성 시 유의사항

intro 인프런의 김영한님의 강의를 듣는 중 정리하면서 체크해야할 부분들이 많아 따로 강의 과정 중 필요한 부분들을 정리해 보기로 했습니다. 잘못된 부분이나 보충할 부분이 있다면 언제든지 댓글로 남겨주시면 최대한 빨리 반영하도록 하겠습니다. project 생성하기 dependency 설정 hibernate의 어떤 버전을 사용해야할까? h2 버전은? hibernate 버전 설정 프로젝트를 생성한 후 hibernate의 버전을 설정하려면 본인이 사용하고 있는 spirngBoot의 버전을 알고 있어야 합니다. spring.io -> Projects -> 해당하는 버전의 Reference Doc. 를 클릭하여 해당 버전의 document를 확인해 봅니다. 그 후 a single HTML page를 클릭해서 한..

CS 2021.11.23

[CS] API? Application? 간단정리.

Application이란(간단명료)? Why? API(Application Programing Interface)의 정확한 정의에 대해 갑작스런 의문이 들었습니다. 관연 API란 무엇일까. API를 알기 위해선 Application의 정의에 대해 알고 있어야 한다는 생각이 들었습니다. 그래서 아주아주 단순하게 정리해 보았습니다. Application이란? 응용이란 뜻이며 응용 프로그램이라고 합니다. 그럼 응용프로그램은 무엇일까요? 응용프로그램이란? 프로그램 중에서 특정한 업무를 해결하기 위한 목적을 가지고 만들어진 프로그램입니다. API란? 서버와 데이터베이스에 대한 출입구 역할을 하며(interface이기 때문에) 어플리케이션과 기기가 원할하게 통신할 수 있도록 합니다. 모든 접속을 표준화 합니다.(기..

CS 2021.11.08

[VM] KVM이란?

KVM(Kernel-based Virtual Machine)은 Linux에 구축되는 오픈소스 가상화 기술입니다. KVM을 통해 Linux를 _하이퍼바이저_로 전환하여 호스트 머신이 게스트 혹은 VM 등 독립된 가상 환경 여려개를 실행할 수 있습니다. KVM은 Linux를 타입1(베어메탈) 하이퍼바이저로 전환하여 구동합니다. 하이퍼바이저란? 가상머신을 생성하고 구동하는 소프트웨어입니다. 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼입니다. 가상머신 모니터(Virtual Machine Monitor, VMM)라고도 불립니다. 단일 하드웨어에서 여러 다른 가상 머신을 호스팅할 수 있는 프로그램입니다. ​ 출처 : 위키 하이퍼바이저 타입 1(native, bare-metal) 하이퍼바..

CS 2021.10.29
728x90
반응형