값 타입 엔티티(Entity)에 속하지 않고, 단순히 엔티티의 속성으로 사용되는 객체 JPA에서 임베디드(Embedded) 타입도 값 타입의 한 종류 임베디드 타입 여러 개의 속성을 하나로 묶어 하나의 객체로 표현할 수 있도록 하는 것 ex. 주소(Address) 객체를 임베디드 타입으로 사용 많이 함. 이러한 경우 주소는 엔티티가 아니라, 엔티티의 속성으로 존재 + 해당 엔티티와 생명주기를 공유한다. 임베디드 타입 사용 시 코드의 재사용성과 가독성 향상. 복합적 데이터를 간단하게 모델링할 수 있음. 필요한 경우 임베디드 타입을 재사용하여 중복을 피할 수 있음. JPA에서 임베디드 타입 사용하기 임베디드 타입으로 사용할 클래스를 정의. 해당 클래스에 @Embeddable 어노테이션을 붙여, JPA에게 이..
DDL Auto 옵션 (총 5가지) none: 사용하지 않음 create: 기존 테이블 삭제 후 테이블 생성 create-drop: 기존 테이블삭제 후 테이블 생성. 종료 시점에 테이블 삭제 update: 변경된 스키마 적용 validate; 엔티티와 테이블 정상 매핑 확인 - update 옵션에서 컬럼 삭제는 엄청난 문제를 발생시킬 수 있기 때문에 컬럼 추가만 반영된다. - 개발 초기에는 create 또는 update 옵션을 이용해시 익숙해지는 데 집중하고 추후에 validate 옵션을 설정 해 주는 것이 좋다. - 스테이징, 운영환경에서는 절대로 create, create-drop. update를 사용하면 안 된다. - 스테이징과 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스..

JPA(Java Persistence API) : 자바 ORM 기술에 대한 API 표준 ORM(Object Relational Mapping) : 객체와 관계데이터베이스를 매핑 CRUD – INSERT, UPDATE, SELECT, DELETE 그리고, 데이터베이스는 관계형 데이터베이스를 사용한다. 그런데 자바는? 객체지향 언어이므로 객체와 관계형 데이터베이스 간에 필연적으로 불일치가 발생하고, 이것은 큰 문제가 된다. => 따라서 객체지향과 관계형 데이터베이스 간의 패러다임이 불일치 하기 때문에, ORM이 등장. # JPA는 인터페이스 # 대표적인 구현체 Hibernate, EclipseLink, DataNucleus, OpenJpa, TopLink 등 보통 Hibernate 로 개발. JPA의 장점 ..

스프링 MVC 패턴 Node.js와의 비교 Maven 프로젝트 구조 설정 파일(application.properties) 잠깐! 어노테이션이란? 메타데이터라고 불린다. JDK5부터 등장한 개념 클래스나 메소드, 변수 등을 선언할 때 ‘@’를 붙여서 사용한다. 어노테이션은 컴파일러에게 정보를 알려주거나, 실행할 때 별도의 처리가 필요할 때 매우 다양한 용도로 사용한다. Hello World 출력하기 @RestController // @Contrller + @ResponseBody @SpringBootApplication // 스프링 부트 어플리케이션 public class SpringDemoApplication { public static void main(String[] args) { SpringAppl..

https://school.programmers.co.kr/learn/courses/30/lessons/181934 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 n과 m이라면 ">", "=" : n >= m "", "!" : n > m "")) { if(n>m) { return 1; } return 0; } else { // ineq.equals
컬럼 만들기 test.sql (테이블이 만들어지는 상황) CREATE TABLE 사업주 (사업주번호 INT, 사업주명 VARCHAR(5), 지점명 VARCHAR(5)); CREATE TABLE 대리점 (지점명 VARCHAR(5) PRIMARY KEY, 도시 VARCHAR(2), 전화번호 VARCHAR(10), 종업원수 INT, 자본금 INT, 지점개설일 INT); 값 집어넣기 firstDB.java package database; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class firstDB { private ..
뷰(VIEW) 뷰는 사용자 입장에서 테이블과 동일하게 사용하는 개체다. USE sqlDB; CREATE VIEW v_userbuytbl AS SELECT U.userid AS 'USER ID', U.name AS 'USER NAME', B.prodName AS 'PRODUCT NAME', U.addr, CONCAT(U.mobile1, U.mobile2) AS 'MOBILE PHONE' FROM usertbl U INNER JOIN buytbl B ON U.userid = B.userid; SELECT `USER ID`, `USER NAME` FROM v_userbuytbl; -- 주의! 백틱을 사용한다. ALTER VIEW v_userbuytbl AS SELECT U.userid AS '사용자 아이디',..