목록분류 전체보기 (85)
경주장
JPA는 다양한 쿼리 방법을 지원 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원 JPQL은 엔티티 객체를 대상으로 쿼리 SQL은 데이터베이스 테이블을 대상으로 쿼리 예시 Member member = new Member(); member.setName("득윤"); em.persist(member); List resultList = em.createQuery( "SELECT m FROM Member m where m.nam..
JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 임베디드 타입(embedded type, 복합 값 타입) 좌표, 주소 컬렉션 값 타입(collection value type) 기본값 타입 생명주기를 엔티티에 의존 (e.g. 회원을 삭제하면 이름, 나이 필..
프록시 Member를 조회할 때 Team도 함께 조회해야 할까? 프록시 기초 em.find() vs em.getReference() em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조(target)를 보관 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 Member member = em.getReference(Member.class, “id1”); member.getName(); 즉시 로딩과..
상속관계 매핑 관계형 데이터베이스는 상속 관계X 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 • 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 조인 전략 단일 테이블 전략 구현 클래스마다 테이블 전략 @MappedSuperclass .공통 매핑 정보가 필요할 때 사용 상속관계 매핑과 다르다 엔티티 아니다 테이블 아니다 자식 클래스에 매핑 정보만 줌 추상 클래스 권장
목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 방향: 단방향, 양방향 다중성 : 다대일, 일대다, 일대일, 다대다 연관관계의 주인 시나리오 회원,팀 객체를 테이블에 맞추어 모델링(외래 키 식별자를 직접 다룸) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; … } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; … } 문제..
객체와 테이블 매핑 : @Entity, @Table import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table public class Member{ ... } @Entity - @Entity가 붙은 클래스는 JPA가 관리함 @Table - @Table은 엔티티와 매핑할 테이블 지정 - @Table(name = "DB저장 이름") 데이터 베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성 운영서버 사용 X, 개발 장비에서만 사용 DB 방언 별로 달라짐 DB schema 자동 생성 속성 resources/META-INF/persistence.xml create : 기존 테이블 삭제 후 다시 생성 create..
분명히 origin/master가 앞선 상태로 푸시가 이루어 졌는데 배포 서버인 ec2 인스턴스에서 git status를 해도 origin/master의 업데이트를 인식하지 못하고 최신 상태라고 주장한다. SSH Authentication 관련 이슈 인것 같은데. -> 아니었음 먼젓번에 Clone 할때는 token 등록만으로 수월하게 되었는데 지금은 또 clone도 진행이 되지 않는다. AWS EC2 apt-get Connecting 0% 오류 해결 방법 - apt-get not working - 재테크 인공지능 AWS EC2 apt-get Connecting 0% 오류 해결 방법 - apt-get not working 해결 방법에 대하여 알아보았습니다. investechnews.com 아예 Git을 지..
AVA 8 이후에는 구현을 포함한 public method를 Interface에 포함할 수 있습니다. (default method, static method) JAVA 9 이후에는 private method를 Interface에 포함할 수 있습니다. Interface와 Abstract Class의 가장 큰 차이점은 사용하는 목적입니다. Abstract class generalize behavior : 개체들의 공통화, 일반화 = 추상 : 자식의 입장에서 추상화 Interface standardize behavior : 개체들의 공통분모를 일반화한 이름 : 부모의 입장에서 활용할 기능의 정의 Interface 는 상수와 메서드 만을 가진다. Abstract Class는 필드와 메서드를 가진다. Interf..
1. 웹 애플리케이션 이해 강의 2. [10분 테코톡] 🌻타미의 Servlet vs Spring 3. [10분 테코톡] 🐶 코기의 Servlet vs Spring HTML Form 데이터 전송 POST METHOD 이렇게 했을때 서버에서 처리해야 하는 업무 서버 TCP/IP 연결 대기, 소켓 연결 HTTP 요청 메시지 파싱해서 읽기 HTTP 요청 타입 METHOD, URL 파싱 등등 HTTP 메시지 바디 내용 파싱 username, age 데이터 파싱 저장 프로세스 실행 비즈니스 로직 실행 DB 저장 요청 HTTP 응답 메시지 생성 HTTP 시작 라인 Header 메시지 바디에 HTML 생성해서 입력 TCP/IP에 응답 전달, 소켓 종료 서블릿 @WebServlet(name = "helloServlet"..