분류 전체보기

    JPA 구동 방식

    JPA 구동 방식

    JPA는 자바 애플리케이션과 JDBC API 사이에서 동작된다. 동작원리를 크게보면 다음과 같다. 개발자가 JPA에게 명령한다. JPA가 JDBC API 사용해서 SQL 호출 결과를 받아서 동작 🧐 여기서 JPA가 어떻게 구동되는지 좀 더 자세히 알아보자. 1. Persistence 클래스에서 META-INF/persistence.xml에서 설정 정보를 읽는다. 2. EntityManagerFactory를 만든다. JPA를 동작시키기 위한 기반 객체이기도 하고, JPA 구현체에 따라서 DB 커넥션 풀도 생성하므로 비용이 아주 크다. 따라서 EntityManagerFactory는 애플리케이션 전체에서 1번만 생성하고 공유해서 사용해야 한다. 3. EntityManager를 필요할때마다 생성하여 JPA를 동..

    hibernate.dialect 란?

    hibernate.dialect 란?

    🧐 Dialect란? JPA의 주요 특징인 "데이터베이스에 종속적이지 않다"를 쓰기위해 hibernate.dialect 를 쓴다. hibernate의 dialect로 데이터베이스 방언(언어, 사투리)을 설정할 수 있다. 서로 다른 데이터베이스 문법, 타입 등을 알아서 처리해주므로 개발자는 데이터베이스를 바꾸더라도 코드를 크게 바꾸지 않게 된다. 가변 문자 비교 MySQL : VARCHAR Oracle : VARCHAR2 문자열 자르는 함수 SQL 표준 : SUBSTRING() Oracle : SUBSTR() 이렇게 SQL 표준과 다르거나 특정 데이터베이스만의 고유 기능을 JPA에서는 방언(Dialect)라고 한다. 개발자는 JPA가 제공하는 표준 문법에 맞춰 사용하면 되므로, 특정 DB에 의존적인 SQL..

    JPA 소개 #2

    JPA 소개 #2

    🧐 ORM(Object Relational Mapping)이란? 객체와 관계형 데이터베이스를 자동으로 매핑(연결)해주는 것 패러다임의 불일치 문제를 해결 ( JPA소개#1 ) 자바 진영에도 여러가지 ORM 프레임워크가 있는데 그 중 하이버네이트 프레임워크가 가장 많이 사용된다. 대중적인 언어에는 대부분 ORM 기술 존재 🧐 JPA(Java Persistence API)란 무엇인가? 자바 진영의 ORM 기술 표준이다. 애플리케이션과 JDBC 사이에서 동작한다. 위 그림의 동작원리는 다음과 같다. 1. 개발자가 JPA에게 명령한다. 2. JPA가 JDBC API 사용해서 SQL 호출 3. 결과를 받아서 동작 🧐 객체를 저장하는 JPA 저장 동작원리를 예시로 알아보자 Member DAO에서 member 객체를..

    JPA 소개 #1

    JPA 소개 #1

    관계형 데이터베이스 = 대중적이고 안전한 데이터 저장소 자바로 개발하는 애플리케이션 대부분 관계형 데이터베이스 사용한다. DB 관리하려면 SQL을 사용해야 한다. 그래서 다음과 같은 원리로 사용하게 된다. JDBC API를 사용해 SQL을 DB에 전달하기에 개발자는 SQL을 다뤄야 한다. 🥲 SQL을 직접 사용할 때 발생하는 문제점 1. 반복 회원 조회 기능 → SQL 작성 회원 등록 기능 → SQL 작성 회원 수정기능 → SQL 작성 회원 삭제 기능 → SQL 작성 ....... → SQL 작성 이렇게 DB에 CRUD하거나 여러 테이블을 사용하려면 반복적이고 유사한 SQL과 JDBC API를 코드로 작성해야 한다. 2. SQL에 의존적 개발 회원 객체를 관리하는 MemberDAO 완성함. 그 후 회원의..

    JPA 란?

    🧐 JPA란? JPA는 자바 진영에서 만든 ORM(Object Relational Mapping) 기술 표준이다. 스프링 진영에서도 스프링 프레임워크 또는 스프링 데이터 JPA라는 기술로 JPA를 지원하며, 또한 전자정부 표준 프레임워크의 ORM 기술도 JPA를 사용한다. 🧐 그렇다면 JPA를 왜 쓰는 것인가? 옛날엔 JDBC API를 사용했기에 비즈니스 로직보다는 SQL과 JDBC API를 작성하는데 시간이 많이 쓰였다. 그러다가 Jdbc Template 같은 SQL 매퍼를 사용하면서 JDBC API 사용 코드를 줄였지만 그래도 CRUD용 SQL은 반복해서 작성했다. 그래서 데이터 중심의 모델로 프로젝트를 작성할 수 밖에 없었기에 자바 진영에서는 객체 모델링으로 만들고 싶어했다. 그렇게 나온 것이 객체..

    [백준] 2675번 - Java(자바)

    [백준] 2675번 - Java(자바)

    백준 2675번 자바 https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 문제 내용은 아래 더보기를 누르면 나온다. 더보기 알고리즘 첫째 줄에는 테스트 케이스의 개수 T 둘째 줄부터는 테스트 케이스 한 줄씩 받음. 테스트 케이스에는 첫 문자는 반복 횟수 R(1 ≤ R ≤ 8)을 입력받음. 두번째 문자부터 문자열 S를 받게됨.문자열 S의 각 문자를 R번 반복하여 출력한다. 1. 테스트 케이스 개수 T 입력받기2. T만큼 반복하기 2-1. 한..

    오라클 클라우드 DB - 스프링부트 프로젝트 연결

    오라클 클라우드 DB - 스프링부트 프로젝트 연결

    https://ssdragon.tistory.com/41?category=1001274 오라클 클라우드 DB 생성 M1 맥북은 Apple Silicon 칩셋이다. 기존 Intel 칩셋(x86-64 기반)에서 Apple Silicon 칩셋(ARM 64 기반)으로 변경되었고, Mac OS 라는 운영체제까지 더해지니 오라클 DB를 로컬 저장소에 생성할 수 없었다. 하지. ssdragon.tistory.com 저번 게시글에서 오라클 클라우드 DB를 생성하였습니다. 그래서 m1 맥북이어도 오라클 db를 언제 어디서나 사용할 수 있습니다. 그렇다면 이 오라클 클라우드 db로 스프링 부트 프로젝트에 연결하는 법을 알아보겠습니다. 1. 프로젝트 생성 기존 프로젝트가 있으신 분들은 넘어가면 됩니다. https://ssd..

    [Clean Code] 2장 의미 있는 이름

    [Clean Code] 2장 의미 있는 이름

    들어가면서 소프트웨어에서 이름은 어디에나 쓰인다. 이렇게 많이 사용하므로 이름을 잘 지으면 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 소개한다. #1, 의도를 분명히 밝혀라 의도가 분명한 이름은 정말로 중요하다. 좋은 이름을 짓는건 시간이 걸리지만 이것으로 절약하는 시간이 훨씬 많다. 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 1번처럼 아무 의미가 없는 변수명이라면 주석으로 설명해야한다. 하지만 2번처럼 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. 왼쪽 코드는 복잡한 문장은 없지만 무슨 기능인지 짐작할 수 없다. 여기서 문제는 단순성이 아니라 함축성이다. 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다. 그래서 사전 정보가 필요하다. 하지만 오른쪽 코드..