본문 바로가기

분류 전체보기

(46)
JPA Basic - 엔티티 매핑 1. 객체와 테이블 매핑: @Entity, @Table ◍ @Entity ○ JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 ○ 주의 ◼ 기본생성자 필수(파라미터가 없는 public 또는 protected 생성자) ◼ final 클래스, enum, interface, innner 클래스에는 사용X ◼ 저장할 필드에 final 사용 X ○ 속성: name ◼ 기본값: 클래스의 이름을 그대로 사용. ◼ 같은 클래스의 이름이 없으면 가급적 기본값 사용. ◍ @Table ○ 엔티티와 매핑할 테이블 지정 ◼ name: 매핑할 테이블 이름(엔티티 이름을 사용) ◼ catalog: 데이터베이스 catalog 매핑 ◼ schema: 데이터베이스 schema 매핑 ◼ uniqueConstraints(DDL..
JPA Basic - 영속성 관리 1. 영속성 컨텍스트 ◍ "엔티티를 영구 저장하는 환경" ○ EntityManager.persist(entity); ◍ 눈에 보이지 않는다. ◍ 엔티티 매니저를 통해서 영속성 컨택스트에 접근(1:1) ◍ J2EE, 스프링 프레임워크 같은 컨테이너 환경.(앤티티 매니저 : 영속성 컨텍스트가 N:1) ◍ 엔터티 생명주기 ○ 비영속(new/transient): 영속성 컨텍스트와 전혀 관계 없는 새로운 상태 ○ 영속(managed): 영속성 컨텍스트에 관리되는 상태 ○ 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태 ○ 삭제(removed): 삭제된 상태 // 객체를 생성한 상태(비영속) Memeber member = new Member(); member.setId("member1"); m..
JPA Basic - Intro 1. Intro. 1. JPA 공부가 어려운 이유 객체와 테이블을 제대로 설계하고 매핑하는 방법을 알려주지 않는다. 1:N, N:1, 1:1, N:M 매핑등의 개념이 난이도 있다. 실무 노하우 + 성능에 대해서 알려주지 않는다. 2. JPA가 실무 사용이 어려운 이유. JPA의 내부 동작 방식 이해 못해서 JPA가 어떤 SQL을 만들어 내는지 이해하지 못함. JPA가 언제 SQL을 만들어 내는지 이해하지 못함. 3. SQL 중심의 개발의 문제점. 개발자는 객체를 RDB에 저장하게 됨. 객체와 RDB의 차이가 있음. 상속 : RDB에서는 JOIN하는 과정을 거쳐야 하고 그 과정은 매우 복잡. 연관관계: 객체는 참조를 사용/ 테이블은 외래키를 사용 -> 객체를 테이블에 맞추어서 저장. 근데 객체는 Long이..
자바빈(JavaBeans) 규약 자바빈 규약 사용이유 자바빈은 비주얼 툴에서 조작하는 컴포넌트 였지만 웹기반 엔터프라이즈 플랫폼이 등장하며 인기 시들해져 가게 됨. 그러나 이 규약을 사용하는 오픈 소스 기술들에 의해 계속 사용 되어 옴. 특히 jsp에서 객체를 이용하기 위해 사용. 그리고 서블릿을 사용하는 것보다 불필요한 코드를 만들지 않아도 되고 프론트에서 백앤드의 기능을 만들지 않아도 되게 되어 프론트와 백앤드를 분리하여 관리 할 수 있다. 용어 프로퍼티(property): 객체의 속성 필드(field, 맴버변수): 객체의 실제 값. ex> 클래스는 어떠한 프로퍼티들을 가지고 있는 객체이고 필드는 getter/setter의 대상이 되는 클래스의 변수나 상수이다. 자바빈 규약. -1. 기본 생성자를 반드시 가지고 있어야 한다. 오버라..
[코드 컴플리트 2] 8장 방어적프로그래밍 방어적 프로그래밍: 다른 루틴의 잘못으로 인한 것이라도 루틴에 잘못된 데이터가 들어왔을 때 작성한 루틴에 아무런 문제가 발생하지 않도록 하는 것. 8.1 잘못된 입력으로부터 프로그램 보호 외부로부터 들어오는 모든 데이터의 값을 검사하라. 데이터가 허용가능한 범위안에 있는지 확인 문자열이 목적에 부합되는 타당한 값인지 시스템을 공격하려는 데이터(버퍼 오퍼플로 시도, SQL 명령문 주입, HTML이나 XML코드 주입, 정수 오버플로, 시스템 호출에 전달되는 데이터) 잘못된 입력을 어떻게 처리할 것인지를 결정하라. 8.2 어설션 루틴이나 매크로 실행시 프로그램이 스스로 검사할 수 있도록 사용하는 코드. 참이면 예상되로 작동 중. 크고 복잡한 프로그램과 높은 신뢰도를 보장해야하는 프로그램에서 특히 유용 예상치 ..
[코드 컴플리트 2] 7장 고급루틴 루틴 : 한가지 목적을 위해서 호출 할 수 있는 개별 메서드나 프로시저. 7.1 루틴을 작성하는 이유 복잡성을 줄인다. 루틴 사용시 해당 데이터를 어떻게 처리할지 고민 하지 않아도 된다. 이해하기 쉬운 중간 단계의 추상화를 도입한다. 이름만으로 별도의 문서가 필요 없을 수 있다. 중복 코드를 피한다. 서브클래싱을 지원한다. 구조화 덜된 루틴보다 길이도 짧고 구조적으로 완성도 높은 루틴을 오버라이드 하면 변경할 내용 많지 않다. 코드의 실행 순서를 감춘다. 포인터 연산을 감춘다 이식성을 높인다. 복잡한 불린 테스트를 단순화 한다. 성능을 개선한다. **간단한 작업도 루틴화 하는게 가독성 향상에도 좋지만 단순히 길이를 짧게 하기 위해서 루틴을 쓰는 건 부적합하다. 크기가 큰 하나의 루틴 내에서 처리하는 것이..